当前位置:   article > 正文

第十五届蓝桥杯题解-数字接龙

第十五届蓝桥杯题解-数字接龙

题意:经过所有格子,并且不能进行交叉,走的下一个格子必须是当前格子值+1%k,输出路径最小的那一条(有8个方向,一会粘图)

思路:按照8个方向设置偏移量进行dfs,第一个到达终点的即为最小路径,直接输出即可

代码:

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define N 12
  4. int n,k;
  5. int g[N][N];
  6. int x[]={-1,-1,0,1,1,1,0,-1};
  7. int y[]={0,1,1,1,0,-1,-1,-1};
  8. bool f,vis[N][N];
  9. vector<int> path;
  10. void dfs(int u,int v,int st){
  11. if(f)return;
  12. if(u==n&&v==n&&st==n*n-1){
  13. for(auto it:path)cout<<it;cout<<endl;
  14. f=true;
  15. return;
  16. }
  17. for(int i=0;i<8;i++){
  18. int xx=u+x[i];
  19. int yy=v+y[i];
  20. if(xx<1||xx>n||yy<1||yy>n)continue;
  21. if(vis[xx][yy])continue;
  22. if(g[xx][yy]!=(st+1)%k)continue;
  23. if(i%2)if(vis[u+x[(i-1)%8]][v+y[(i-1)%8]]&&vis[u+x[(i+1)%8]][v+y[(i+1)%8]])continue;
  24. vis[xx][yy]=true;
  25. path.push_back(i);
  26. dfs(xx,yy,st+1);
  27. vis[xx][yy]=false;
  28. path.pop_back();
  29. }
  30. }
  31. int main(){
  32. cin>>n>>k;
  33. for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)cin>>g[i][j];
  34. vis[1][1]=true;
  35. dfs(1,1,0);
  36. if(!f)cout<<-1<<endl;
  37. return 0;
  38. }
  39. /*
  40. 3 3
  41. 0 2 0
  42. 1 1 1
  43. 2 0 2
  44. 9 9
  45. 0 1 2 3 4 5 6 7 8
  46. 8 7 6 5 4 3 2 1 0
  47. 0 1 2 3 4 5 6 7 8
  48. 8 7 6 5 4 3 2 1 0
  49. 0 1 2 3 4 5 6 7 8
  50. 8 7 6 5 4 3 2 1 0
  51. 0 1 2 3 4 5 6 7 8
  52. 8 7 6 5 4 3 2 1 0
  53. 0 1 2 3 4 5 6 7 8
  54. 10 10
  55. 0 1 2 3 4 5 6 7 8 9
  56. 9 8 7 6 5 4 3 2 1 0
  57. 0 1 2 3 4 5 6 7 8 9
  58. 9 8 7 6 5 4 3 2 1 0
  59. 0 1 2 3 4 5 6 7 8 9
  60. 9 8 7 6 5 4 3 2 1 0
  61. 0 1 2 3 4 5 6 7 8 9
  62. 0 0 0 0 0 0 0 0 0 9
  63. 0 1 2 3 4 5 6 7 8 9
  64. 9 8 7 6 5 4 3 2 1 0
  65. 10 10
  66. 0 1 2 3 4 5 6 7 8 9
  67. 9 8 7 6 5 4 3 2 1 0
  68. 0 1 2 3 4 5 6 7 8 9
  69. 9 8 7 6 5 4 3 2 1 0
  70. 0 1 2 3 4 5 6 7 8 9
  71. 9 8 7 6 5 4 3 2 1 0
  72. 0 1 2 3 4 5 6 7 8 9
  73. 9 8 7 6 5 4 3 2 1 0
  74. 0 1 2 3 4 5 6 7 8 9
  75. 9 8 7 6 5 4 3 2 1 0
  76. 这组样例还是过不了!!!
  77. 10 1
  78. 0 0 0 0 0 0 0 0 0 0
  79. 0 0 0 0 0 0 0 0 0 0
  80. 0 0 0 0 0 0 0 0 0 0
  81. 0 0 0 0 0 0 0 0 0 0
  82. 0 0 0 0 0 0 0 0 0 0
  83. 0 0 0 0 0 0 0 0 0 0
  84. 0 0 0 0 0 0 0 0 0 0
  85. 0 0 0 0 0 0 0 0 0 0
  86. 0 0 0 0 0 0 0 0 0 0
  87. 0 0 0 0 0 0 0 0 0 0
  88. */

 最后提一嘴:

这个爬山题也太难了吧,2 1 1 48 49这种样例咋做啊!!!期待官方std

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/440971
推荐阅读
相关标签
  

闽ICP备14008679号