码迷,mamicode.com
首页 > 其他好文 > 详细

uva 1594

时间:2015-05-24 14:19:54      阅读:310      评论:0      收藏:0      [点我收藏+]

标签:stl   set   

运用set判断是否重复就可以简单求解。
之前WA了一次
因为最后写了

if(T) cout<<endl;//不用判断是不是最后一行,因为题目说所有结果都要独占一行

AC代码:

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <vector>
#include <set>
#include <math.h>
using namespace std;

set<vector<int> > s;

int main(){
    int T,n,a;
    cin >> T;
    while(T--){
        s.clear();
        cin >> n;int cnt = n;
        int f = 0;
        vector<int> v;
        while(cnt--){
            cin >> a;
            v.push_back(a);
        }
        s.insert(v);
        while(1){
            vector<int> t;
            bool is_zero = true;
            for(int i =0;i<n-1;i++){
                t.push_back(abs(v[i]-v[i+1]));
                if(v[i]-v[i+1]!=0) is_zero = false;
            }
            t.push_back(abs(v[n-1]-v[0]));
            if(v[n-1]!=v[0]) is_zero = false;
            if(is_zero) {f=2;break;}
            else if(s.count(t)){f=1;break;}
            else{
                s.insert(t);
                v = t;
            }
        } 
        if(f==2) cout<<"ZERO";
        if(f==1) cout<<"LOOP";
        cout<<endl;
    }
    return 0;
}

uva 1594

标签:stl   set   

原文地址:http://blog.csdn.net/iboxty/article/details/45951221

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!