Ducci Sequence UVA 1594
2017-01-04 17:27
323 查看
本题用了两种解法:解法一是直接通过数组,当所有元素为0时,退出循环
解法二则是为了练习STL中容器的使用,利用set容器元素不重复的特点,当元素不同时向set中插入元素,(count()方法判断)有相同时 即为循环;
解法一:
#include<cstdio>
#include<cstdlib>
const int len=20;
int a[len];
int solve(int n){
for(int i=0;i<n;i++){
if(a[i])return 0;
}
return 1;
}
int main(){
int T;
scanf("%d",&T);
while(T--){
int n;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
int temp=1000;
int fg=1;
while(temp--){
int t=a[0];
int i=0;
for(;i<n-1;i++)
a[i]=abs(a[i]-a[i+1]);
a[i]=abs(t-a[i]);
int flag=solve(n);
if(flag){
printf("ZERO\n");
fg=0;
break;
}
}
if(fg)printf("LOOP\n");
}
return 0;
}
解法二:
#include<cstdio>
#include<set>
#include<cstdlib>
#include<vector>
using namespace std;
vector<int>vec;
set<vector<int> >set1;
int main(){
int T;
scanf("%d",&T);
while(T--){
int n;
scanf("%d",&n);
for(int i=0;i<n;i++)
{int temp;
scanf("%d",&temp);
vec.push_back(temp);
}
set1.insert(vec);
int t=1000;
while(t--){
int i;
for(i=0;i<n;i++)
if(vec[i]==0);
else break;
if(i==n){
printf("ZERO\n");
break;
}
int temp=vec[0];
for(i=0;i<n-1;i++)
vec[i]=abs(vec[i]-vec[i+1]);
vec[i]=abs(temp-vec[i]);
if(!set1.count(vec))set1.insert(vec);
else {
printf("LOOP\n");
break; }
}
vec.clear();
set1.clear(); //每一组数据结束都需要清空容器
}
return 0;
}
解法二则是为了练习STL中容器的使用,利用set容器元素不重复的特点,当元素不同时向set中插入元素,(count()方法判断)有相同时 即为循环;
解法一:
#include<cstdio>
#include<cstdlib>
const int len=20;
int a[len];
int solve(int n){
for(int i=0;i<n;i++){
if(a[i])return 0;
}
return 1;
}
int main(){
int T;
scanf("%d",&T);
while(T--){
int n;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
int temp=1000;
int fg=1;
while(temp--){
int t=a[0];
int i=0;
for(;i<n-1;i++)
a[i]=abs(a[i]-a[i+1]);
a[i]=abs(t-a[i]);
int flag=solve(n);
if(flag){
printf("ZERO\n");
fg=0;
break;
}
}
if(fg)printf("LOOP\n");
}
return 0;
}
解法二:
#include<cstdio>
#include<set>
#include<cstdlib>
#include<vector>
using namespace std;
vector<int>vec;
set<vector<int> >set1;
int main(){
int T;
scanf("%d",&T);
while(T--){
int n;
scanf("%d",&n);
for(int i=0;i<n;i++)
{int temp;
scanf("%d",&temp);
vec.push_back(temp);
}
set1.insert(vec);
int t=1000;
while(t--){
int i;
for(i=0;i<n;i++)
if(vec[i]==0);
else break;
if(i==n){
printf("ZERO\n");
break;
}
int temp=vec[0];
for(i=0;i<n-1;i++)
vec[i]=abs(vec[i]-vec[i+1]);
vec[i]=abs(temp-vec[i]);
if(!set1.count(vec))set1.insert(vec);
else {
printf("LOOP\n");
break; }
}
vec.clear();
set1.clear(); //每一组数据结束都需要清空容器
}
return 0;
}
相关文章推荐
- Ducci Sequence UVA - 1594
- UVA - 1594 Ducci Sequence
- Ducci Sequence UVA - 1594
- Ducci Sequence UVA - 1594
- Ducci Sequence - uva1594 - vector,map
- UVa1594 - Ducci Sequence
- Ducci Sequence UVA - 1594
- UVa 1594 Ducci Sequence
- 【习题 5-2 UVA-1594】Ducci Sequence
- UVa_1594Ducci_Sequence
- Ducci Sequence UVA - 1594 多元组表示方法
- UVa1594 Ducci Sequence Ducci序列(习题5-2)
- Ducci Sequence UVA - 1594
- UVa 1594 - Ducci Sequence
- 5-2 UVA 1594 Ducci Sequence (Ducci序列)
- Ducci序列(Ducci Sequence ,UVa1594)
- UVa 1594 Ducci队列
- 习题5-2 Ducci序列 UVa1594
- Uva Ducci Sequence(map映射的哈希表)
- 习题5-2 Ducci序列(Ducci Sequence, ACM/ICPC Seoul 2009, UVa1594)