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

来源:互联网 发布:coc咏王升级数据 编辑:程序博客网 时间:2024/06/05 15:59

题目: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;}


0 0