5-1 ~ 5-4

来源:互联网 发布:粒子群算法图像去噪 编辑:程序博客网 时间:2024/04/30 00:49
//5-1 UVa 1593 /*  alignment n. 队列,成直线;校准;结盟    customizable adj. 可定制的    align vt. 排列    vertical adj. 垂直的,直立的;n.垂直线,垂直面 */   int main() {        string s;        vector<vector<string> > strcache;        int maxlen[1005] = { 0 };        //IN(); OUT();         CLOSE();        while(getline(cin, s)) {            stringstream ss(s);            string word;            vector<string> svec;            while(ss >> word) {                //cout << word;                int i = svec.size();                maxlen[i] = max(maxlen[i], (int )word.size());                svec.push_back(word);            }            strcache.push_back(svec);        }        for(int i = 0; i < strcache.size(); i++) {            for(int j = 0; j < strcache[i].size(); j++) {                cout << strcache[i][j];                int t = maxlen[j]+1-strcache[i][j].size();                if(j != strcache[i].size()-1) while(t--) cout << ' ';            }            cout << endl;        }        return 0;    }    
//5-2 UVa 1594/*period n. 周期*/int main() {    int T;    scanf("%d", &T);    while(T--) {        int n, x;        scanf("%d", &n);        vector<int> zero(n, 0);        vector<int> n_tuple;        set<vector<int> > tuples;        for(int i = 0; i < n; i++) {            scanf("%d", &x);            n_tuple.push_back(x);        }        tuples.insert(n_tuple);        for(int i = 0; i < 1000; i++) {            vector<int> t;            for(int j = 0; j < n; j++) {                x = abs(n_tuple[j] - n_tuple[(j+1)%n]);                t.push_back(x);            }            n_tuple = t;            if(t == zero) {                printf("ZERO\n");                break;            }            if(tuples.count(t)) {                printf("LOOP\n");                break;            }            tuples.insert(t);        }    }    return 0;}
//习题5-3 卡片游戏(Throwing cards away I, UVa 10935)/*deck n. 甲板;行李仓;露天平台vt. 装饰;装甲板;打扮discard vt. 抛弃;放弃;丢弃 vi. 放弃 n . 抛弃;被丢弃的东西或人*/int main() {    int n;    while(scanf("%d", &n) && n) {        deque<int> cards;        printf("Discarded cards:");        for(int i = 1; i <= n; i++) cards.push_back(i);        int flag = 1;        while(cards.size() > 1) {            if(flag) flag = 0;            else printf(",");            printf(" %d", cards.front());            cards.pop_front();            int t = cards.front();            cards.push_back(t);            cards.pop_front();        }        printf("\n");        printf("Remaining card: %d\n", cards.front());    }    return 0;}
//习题5-4 交换学生(Foreign Exchange, UVa 10763)int main() {    int n, a, b;    //IN(); OUT();    while(scanf("%d", &n) && n) {        map<pair<int, int>, int> cnt;        for(int i = 0; i < n; i++) {            scanf("%d%d", &a, &b);            pair<int, int> p(a, b);            cnt[p]++;        }        bool flag = true;        for(auto i = cnt.begin(); i != cnt.end(); i++) {            int a = (*i).first.second, b = (*i).first.first;            pair<int, int> p(a, b);            //cout << a << b;            if(!cnt.count(p) || cnt[p] != (*i).second) {                flag = false;                break;            }        }        if(flag) printf("YES\n");        else printf("NO\n");    }    return 0;}