NYOJ 1170 最大的数(待续)
来源:互联网 发布:java所有关键字 编辑:程序博客网 时间:2024/05/16 08:51
题目链接
小鲍提供的算法,我写的代码,体会不出贪心的算法,找不出代码WA的原因,在此附上自己的代码和网上的代码,待日后解决。。
我的代码
#include<stdio.h>#include<math.h>int main(){ int n,ans; int a[10010]; while(scanf("%d",&n)!=EOF) { ans=1; for(int i=1;i<=n;i++) { scanf("%d",&a[i]); } if(a[1]==1) { a[2]++; } for(int i=2;i<n;i++) { if(a[i]==1) { if(a[i-1]>a[i+1]) a[i+1]++; else a[i-1]++; } } if(a[n]==1) a[n-1]++; for(int i=1;i<=n;i++) { //printf("%d ",a[i]); ans*=a[i]; ans=ans%10086; } printf("%d\n",ans); } return 0;}
网上的
#include<iostream>#include<algorithm>#include<string.h>#include<stdio.h>using namespace std;int a[10005];void add(int l,int r){ if(a[l]==2) { a[l]++; return ; } if(a[l]==0) l--; a[l]<=a[r]?a[l]++:a[r]++;}int main(){ int n; while(cin>>n) { int i,j; for(i=0; i<n; i++) cin>>a[i]; if(a[0]==1) { a[1]++; a[0]=0; } for(i=1; i<n-1; i++) if(a[i]==1) { a[i]=0; add(i-1,i+1);//左加or右加 } if(a[n-1]==1&&n>1) { for(i=n-2; !a[i]; i--);//0 a[i]++; a[n-1]=0; } int sum; for(i=0,sum=1; i<n; i++) if(a[i]) sum=(sum*a[i])%10086; cout<<sum<<endl; }}
0 0
- NYOJ 1170 最大的数(待续)
- 最大的数(nyoj 1170)
- nyoj 1170 最大的数(贪心)
- 最大的数 nyoj 1170
- NYOJ 1170 最大的数
- NYOJ-1170 最大的数
- NYOJ-最大的数
- nyoj 最大的数 1170 (数学+技巧转化)
- nyoj--1170--最大的数(数学技巧)
- NYOJ 1170 最大的数(贪心算法)
- NYOJ题目1170-最大的数
- NYOJ 1170 最大的数 贪心
- 寻找最大回文数(未完待续)
- NYOJ 寻找最大数(三)
- nyoj 1057 寻找最大数(三)
- nyoj 448寻找最大数(贪心)
- NYOJ 寻找最大数(三)
- nyoj 1057 寻找最大数(三)
- 关于Jsoup的一些认识
- 中断之中断向量表IDT的初始化
- 【lightoj1307】Counting Triangles
- GreenDao的使用
- 区间DP——Dire Wolf ( HDU 5115 )
- NYOJ 1170 最大的数(待续)
- mysql 数据库的事务隔离级别及mysql 索引优化
- matlab:从参考二维矩阵中选择出指定的元素
- Splay总结
- ACM学习历程16——List链表的应用之简单约瑟夫问题
- Thrift应用:Windows下C#服务端实现
- SpringMVC不经过Controller直接响应页面
- Git学习总结
- Java集合类