您的位置:首页 > 产品设计 > UI/UE

Uva1594 Ducci Sequence 【set,vector应用】【习题5-2】

2016-11-06 19:31 239 查看
题目:Ducci Sequence

题意:按题中给出表达式计算序列为死循环还时变成0。

思路:用vector存放每次计算出的n元祖,首先判断每次计算的元组是否全为0,否则将放入set集合,检测set集合中是否出现过此元祖,出现说明为死循环!

代码:

#include <iostream>
#include <vector>
#include <set>
#include <math.h>
using namespace std;
vector<int>integer;
set< vector<int> >seq;//集合所存放的是n元组
bool judgeZore(int a[],int n)
{
int cot = 0;
for(int i=0;i<n;i++)
if(a[i] == 0)
cot++;
if(cot == n)
return true;
return false;}
bool judgeLoop()
{
if(seq.count(integer))
return true;
seq.insert(integer);
return false;}
int main()
{
int t,n,figital,a[20];
cin >> t;
while(t--)
{
cin >> n;
for(int i=0;i<n;i++)
{
cin >> figital;
integer.push_back(figital);
a[i] = figital;
}
seq.insert(integer);

while(true)
{
integer.clear();
int temp = a[0];
for(int i=0;i<n-1;i++)
{
a[i] = abs(a[i]-a[i+1]);
integer.push_back(a[i]);
}
a[n-1] = abs(a[n-1]-temp);
integer.push_back(a[n-1]);
if(judgeZore(a,n))
{
cout << "ZERO" << endl;
break;
}
if(judgeLoop())
{
cout << "LOOP" << endl;
break;
}
}
seq.clear();
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: