当前位置:   article > 正文

滑雪问题(动态规划)_滑雪求最短路径代码

滑雪求最短路径代码
  1. // write your code here cpp
  2. /*
  3. 1、本题使用递归的核心在于处理边界问题
  4. 2、本文处理的时候 存储方式如下
  5. 65535 65535 65535 65535
  6. 65535 实体值 实体值 65535
  7. 65535 实体值 实体值 65535
  8. 65535 65535 65535 65535
  9. 四周的值都比较大使得其不可越界
  10. */
  11. #include<iostream>
  12. #include<vector>
  13. #include<algorithm>
  14. int dp[102][102];
  15. #define M 10086;
  16. using namespace std;
  17. int mm =0 ;
  18. void compute(int x, int y, int n)
  19. {
  20. int t;
  21. t=dp[x][y];
  22. if(t<=dp[x-1][y]&&t<=dp[x+1][y]&&t<=dp[x][y-1]&&t<=dp[x][y+1])
  23. {
  24. mm=mm>n? mm:n;
  25. return ;
  26. }
  27. if(t>dp[x-1][y])
  28. compute(x-1,y,n+1);
  29. if(t>dp[x+1][y])
  30. compute(x+1,y,n+1);
  31. if(t>dp[x][y-1])
  32. compute(x,y-1,n+1);
  33. if(t>dp[x][y+1])
  34. compute(x,y+1,n+1);
  35. return;
  36. }
  37. int main()
  38. {
  39. int m =0, n =0;
  40. while( cin >>m >> n)
  41. {
  42. for(int i =0; i<=101; i++)
  43. {
  44. for(int j =0; j <=101; j++)
  45. {
  46. dp[i][j] = 655350;
  47. }
  48. }
  49. for(int i = 1; i <= m; i++ )
  50. {
  51. for(int j = 1; j <=n; j++)
  52. {
  53. int t =0;
  54. cin >> t;
  55. dp[i][j] = t;
  56. }
  57. }
  58. for(int i = 1; i <= m; i++ )
  59. {
  60. for(int j = 1; j <=n; j++)
  61. {
  62. compute(i,j,1);
  63. }
  64. }
  65. cout << mm <<endl;
  66. }
  67. return 0;
  68. }

 

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

闽ICP备14008679号