• 基础算法之搜索算法


    深度搜索和广度搜索是我们搜索算法中常用的一种思想

    4-1 油田合并问题

       问题描述 :

            大致思想:给一幅油田地图,算出油田中可以至少需要几个泵,相连的油田中的油可以相互流动

      输入地图 m*n (<=50)

       然后给出数据

      输出泵的个数

    源代码:

    #include<stdio.h>
    #define N 50
    char Map[N][N];
    int Flag[N][N];
       int m,n;
    void dfs(int i,int j)
    {
    	//四个方向搜索
    	//判断边界
    if(i<0||i>=m||j<0||j>=n)return ;
    Flag[i][j]=1;//遍历了
    
    if(Flag[i-1][j]==0&&Map[i-1][j]=='@')dfs(i-1,j);
    if(Flag[i+1][j]==0&&Map[i+1][j]=='@')dfs(i+1,j);
    if(Flag[i][j-1]==0&&Map[i][j-1]=='@')dfs(i,j-1);
    if(Flag[i][j+1]==0&&Map[i][j+1]=='@')dfs(i,j+1);
    
    	
    }
    
    int main()
    {
       int i,j,ans;
       while(scanf("%d%d",&m,&n)!=EOF)
       {
    	   //初始化
    	       getchar();
    	       for(i=0;i<m;i++)
    		   {
    			   for(j=0;j<n;j++)
    		   {
    			   Flag[i][j]=0;
    			   scanf("%c",&Map[i][j]);
    		   }
    			   getchar();
    		   }
                ans=0;
    
    		   for(i=0;i<m;i++)3
    			   for(j=0;j<n;j++)
    			   {
    				   if(Flag[i][j]==0&&Map[i][j]=='@')
    				   {
    					   ans++;
    					   dfs(i,j);
    				   }
    			   }
    			   printf("%d\n",ans);
         
    
       }
    
    	return 0;
    }
    

    4-2新连连看

     问题描述:

           许多人都玩过连连看的游戏,今天玩一个类似的游戏,在一个10*10大小的小方格组成的矩形中有n(n《10)对字符,他们是大写字母中的前n个,矩形里有些位置可以从上面走过有些则不能,能走过的位置用.来标记,不能的用#来标记,如果两个相同的字符是联通的,从一个字符能走到另一个字符,注意只能从上下左右走,某个位置有其他字符的时候是不能走通的,那么这对字符能够进行配对,如果这对字符匹配成功,则从矩形中消失,也就是说这个位置可以变的走动了

            现在的问题是请你决定这些字符的配对的顺序(只有能配对的才进行配对)使得n对字符最后都配对成功

    输入:

        先给出一个正整数,表示有t组测试数据

        每组有10行 每行有10个字符这些字符只能是. #和大写字符组成

    输出:

        若每组测试数据中的n对字符可以配对成功,输出配对顺序,如果有多种配对成功的顺序,请输出字典中顺序最小的那组

       否则输出 MyGod

    4-3八数码问题

  • 相关阅读:
    ES6新特性
    CSS + HTML 鼠标在图片上悬停时的显示文字,移走时文字消失
    APICloud closeToWin和closeWin的使用
    基于vue-cli配置移动端自适应
    Cookies,localStorage,sessionStorage,Web SQL Database(客户端)会话存储学习
    select标签默认选择选项
    MySQL数据库的配置
    jsp定义 ,JSON对象
    eclipse配置
    VS2017 C++编译时出现 "the windows sdk version for 8.1 was not found"解决办法(亲测有效)
  • 原文地址:https://www.cnblogs.com/OneDream/p/3000866.html
Copyright © 2020-2023  润新知