当前位置:   article > 正文

蓝桥杯试题 算法训练 拿金币(C语言)_有一个n x n的方格,每一个格子都有一些金币,只要站在格子里就能拿到里面的金币。你站在最左上角的格

有一个n x n的方格,每一个格子都有一些金币,只要站在格子里就能拿到里面的金币。你站在最左上角的格子里,每次可以从一个格子走到它右边或下边的格子里。请问如何走才能拿到最多的金币。帀。

问题描述

  有一个N x N的方格,每一个格子都有一些金币,只要站在格子里就能拿到里面的金币。你站在最左上角的格子里,每次可以从一个格子走到它右边或下边的格子里。请问如何走才能拿到最多的金币。

输入格式

  第一行输入一个正整数n。
  以下n行描述该方格。金币数保证是不超过1000的正整数。

输出格式

  最多能拿金币数量。

样例输入

3
1 3 3
2 2 2
3 1 2

样例输出

11

数据规模和约定

  n<=1000

  1. #include<stdio.h>
  2. #define N 1001
  3. int a[N][N];
  4. int main()
  5. {
  6. int i , j , n , add ;
  7. scanf("%d",&n);
  8. for(i=1;i<=n;i++)
  9. for(j=1;j<=n;j++)
  10. scanf("%d",&a[i][j]);
  11. a[1][0]=a[0][1]=0;
  12. for(i=1;i<=n;i++)
  13. for(j=1;j<=n;j++)
  14. {
  15. if(a[i][j-1]>a[i-1][j])
  16. a[i][j]+=a[i][j-1];
  17. else
  18. a[i][j]+=a[i-1][j];
  19. }
  20. add=a[5][1];
  21. for(i=2;i<=n;i++)
  22. if(a[n][i]>add)
  23. add=a[n][i];
  24. printf("%d",add);
  25. return 0;
  26. }

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

闽ICP备14008679号