【题目大意】

给出一个5*5的方格,求出从任意一点出发走6步组成的不同序列数。

【思路】

dfs的水题,当作set使用方法的初次学习。每次从任意一点出发进行一次dfs,将序列加入set,最后输出set.size()即可。

 1 #include<iostream>
 2 #include<cstring>
 3 #include<set>
 4 using namespace std;
 5 int map[6][6];
 6 int dx[4]={0,0,1,-1};
 7 int dy[4]={1,-1,0,0};
 8 set<int> s;
 9 
10 void dfs(int x,int y,int step,int sum)
11 {
12     if (step==6) 
13     {
14         s.insert(sum);
15         return;
16     }
17     for (int i=0;i<4;i++)
18     {
19         int nowx=x+dx[i],nowy=y+dy[i];
20         if (nowx<0 || nowy<0 || nowx>=5 || nowy>=5) continue;
21         dfs(nowx,nowy,step+1,sum*10+map[nowx][nowy]);
22     }
23 }
24 
25 int main()
26 {
27     for (int i=0;i<5;i++)
28         for (int j=0;j<5;j++) scanf("%d",&map[i][j]);
29     for (int i=0;i<5;i++)
30         for (int j=0;j<5;j++)
31             dfs(i,j,1,map[i][j]);
32     cout<<s.size()<<endl;
33     return 0;
34 }

 

相关文章:

  • 2021-11-06
  • 2021-09-06
  • 2022-12-23
  • 2022-01-13
  • 2021-08-13
  • 2021-08-19
  • 2021-07-28
  • 2021-04-19
猜你喜欢
  • 2022-12-23
  • 2021-12-25
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-06-08
  • 2022-12-23
相关资源
相似解决方案