uva1594 Ducci Sequence 习题5-2 (STL map练习)
2015-01-02 18:20
323 查看
题目:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=&problem=4469
题意:输入n个数,a1,a1,a2....an,进行1000次计算:(a1,a2,...,an)
(| a1 - a2|,| a2 - a3|, ... ,| an - a1|),判断是否存在重复
或者都为0.
参考博客:http://www.cnblogs.com/shinecheng/p/4031981.html 感谢ShineCheng
这是第一次写的代码,比较乱,仔细看了看ShineCheng的代码,又写了一次
第二次写的代码:
题意:输入n个数,a1,a1,a2....an,进行1000次计算:(a1,a2,...,an)
(| a1 - a2|,| a2 - a3|, ... ,| an - a1|),判断是否存在重复
或者都为0.
参考博客:http://www.cnblogs.com/shinecheng/p/4031981.html 感谢ShineCheng
这是第一次写的代码,比较乱,仔细看了看ShineCheng的代码,又写了一次
<span style="font-size:18px;">#include<iostream> #include<map> #include<algorithm> using namespace std; struct node{ int n; int a[16]; bool operator < (const node &b) const{ for(int i=0;i<n;i++) if(a[i]!=b.a[i]) return a[i]<b.a[i]; return false; } }p; map<node,int> vis; int main(){ int T; cin >> T; while(T--){ vis.clear(); cin >> p.n; for(int i=0;i<p.n;i++) cin >> p.a[i]; vis[p]=1; int flag=1;//标志是否已经输出ZERO或者LOOP for(int i=0;i<1010;i++){ int tot=0; int rem=p.a[0]; for(int j=0;j<p.n-1;j++){ p.a[j]=abs(p.a[j]-p.a[j+1]); if(p.a[j]==0) tot++; } p.a[p.n-1]=abs(p.a[p.n-1]-rem); if(p.a[p.n-1]==0) tot++; if(vis[p]==1 || tot==p.n){ if(tot==p.n) cout << "ZERO\n"; else cout << "LOOP\n"; flag=0; break; } vis[p]=1; } if(flag ) cout << "LOOP\n"; } return 0; }</span>
第二次写的代码:
#include<iostream> #include<map> #include<algorithm> using namespace std; struct node{ int n; int a[16]; void read(){ for(int i=0;i<n;i++) cin >> a[i]; } void ducci(){ int tmp=a[0];//这里注意要存一下第一个元素 for(int i=0;i<n-1;i++) a[i]=abs(a[i]-a[i+1]); a[n-1]=abs(a[n-1]-tmp); } int tot(){ for(int i=0;i<n;i++) if(a[i]!=0) return 0; return 1; } bool operator < (const node &b) const{ for(int i=0;i<n;i++) if(a[i]!=b.a[i]) return a[i]<b.a[i]; return false; } }p; map<node,int> vis; int main(){ int T; cin >> T; while(T--){ vis.clear(); cin >> p.n; p.read(); int flag=0;//标志是否已经输出ZERO或者LOOP for(int i=0;i<1010;i++){ if(vis[p]==1 || p.tot()){ flag=1; if(vis[p]) cout << "LOOP\n"; else cout << "ZERO\n"; break; } vis[p]=1; p.ducci(); } if(flag==0) cout <<"LOOP\n"; } return 0; }
相关文章推荐
- 习题5-2 Ducci序列(Ducci Sequence, ACM/ICPC Seoul 2009, UVa1594)
- Uva1594 Ducci Sequence 【set,vector应用】【习题5-2】
- [刷题]算法竞赛入门经典(第2版) 5-2/UVa1594 - Ducci Sequence
- UVa 1594 - Ducci Sequence【模拟】
- Uva 1594 - Ducci Sequence
- uva 10391 Compound Words 习题5-5 (STL string、set练习)
- UVa--1594 Ducci Sequence(模拟)
- Uva 1594 Ducci Sequence
- UVa 1594 - Ducci Sequence(模拟)
- uva 12100 Printer Queue 习题5-7 打印队列 (STL deque练习)
- UVa 1594 Ducci Sequence
- UVA 1594(p135)----Ducci Sequence
- UVa1594 - Ducci Sequence
- uva1594 - Ducci Sequence
- UVa-1594 - Ducci Sequence
- UVA ~ 1594 ~ Ducci Sequence (模拟,set + vector)
- UVa 1594 Ducci Sequence
- 习题5-2 Ducci序列 UVa1594
- UVA 1594 Ducci Sequence(两极问题)
- uva-1594 - Ducci Sequence c++, stl练习,map