• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

TYVJ1079数字三角形2byC++

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
 1 #include<iostream>
 2 using namespace std;
 3 const int maxn=30;
 4 int n,px,py;
 5 int a[maxn][maxn],f[maxn][maxn];
 6 
 7 void get_prepare()
 8 {
 9     cin >> n;
10     for (int i=0;i<n;i++)
11         for (int j=0;j<=i;j++){
12             cin >> a[i][j];
13             f[i][j]=a[i][j];
14         }
15     px=n/2;
16     py=--px;
17     for (int i=0;i<=px;i++) {if (i!=py) a[px][i]=-65536;}
18 }
19 
20 int answer()
21 {
22     for (int i=1;i<n;i++)
23         for (int j=0;j<=i;j++){
24             if (f[i-1][j]+a[i][j]>f[i][j]) f[i][j]=f[i-1][j]+a[i][j];
25             if (j-1>=0 && f[i-1][j-1]+a[i][j]>f[i][j]) f[i][j]=f[i-1][j-1]+a[i][j];
26         }
27     int max=0;
28     for (int i=0;i<n;i++) if (f[n-1][i]>max) max=f[n-1][i];
29     return max;
30 }
31 int main()
32 {
33     get_prepare();
34     cout << answer() << endl;
35     return 0;
36 }

发现对于边界的考虑必须周全!这一点在我用pascal写的时候还不够明显,但当我手测数据全队、交上两次全WA的时候我就明白了……
因为对数组的初始化没有考虑,所以在递推时一定要注意不要跨出数组范围,在内循环的判断中如果没有那个 (j-1>=0)这个程序就是全WA的,除非初始化做得很好(杯具啊,还没看初始化的方面)


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#使用SqlTransaction事务回滚与SqlBulkCopy批量插入数据发布时间:2022-07-13
下一篇:
C#常用的单元测试框架发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap