POJ 1053 Set Me
2015-05-12 11:03
267 查看
题目链接:POJ 1053-Set Me
题意是这样的:定义了一种扑克牌,他们有四个特性(characters),如果有三张牌,满足:这四个特性中的每一个要么相一致,要么完全不相一致,那么这三张牌构成了一个set
按要求格式输出所有的set,如果一个set也没有,输出 ***None Found***
此题难点有:
①对于输入的处理,从Sample Input可以发现,整个测试以EOF结束,每组样例之间只是隔着一个空行,每组样例开始的时候并不会告诉你这组样例的规模。因此,对于我这样的新手。。。输入的技巧就不够用了。。最后还是参考的网上的处理。。对于字符串,用if(gets(element[i++])==NULL)表示读到了一个空行,(NULL,空指针,在这里指向的是字符首位),另外用while( gets (element [ i ] )!=NULL && strcmp ( element [ i ],""))对应空行读入。
②没想到这个题是暴搜就可以过的。。题目中貌似没有说规模大小。。这个也是坑。
贴代码:
题意是这样的:定义了一种扑克牌,他们有四个特性(characters),如果有三张牌,满足:这四个特性中的每一个要么相一致,要么完全不相一致,那么这三张牌构成了一个set
按要求格式输出所有的set,如果一个set也没有,输出 ***None Found***
此题难点有:
①对于输入的处理,从Sample Input可以发现,整个测试以EOF结束,每组样例之间只是隔着一个空行,每组样例开始的时候并不会告诉你这组样例的规模。因此,对于我这样的新手。。。输入的技巧就不够用了。。最后还是参考的网上的处理。。对于字符串,用if(gets(element[i++])==NULL)表示读到了一个空行,(NULL,空指针,在这里指向的是字符首位),另外用while( gets (element [ i ] )!=NULL && strcmp ( element [ i ],""))对应空行读入。
②没想到这个题是暴搜就可以过的。。题目中貌似没有说规模大小。。这个也是坑。
贴代码:
#include <iostream> #include <cstring> #include <cstdlib> #include <cmath> #include <algorithm> #include <cstdio> //#define file using namespace std; char element[100][10]; int ans [100][3]; int ansnum=0; int i; int check1(char a,char b,char c)//check each char suit the need or not { if(a==b&&b==c) return 1; else { if(a==b||b==c||a==c) return 0; } return 1; } int check2(char *s1,char *s2,char *s3)//check if 3 elements can come up to a set { for(int i=0; i<4; i++) { if(!(check1(s1[i],s2[i],s3[i]))) return 0; } return 1; } void check3()//work out the set finally { for(int t=0; t<i-2; t++) { for(int p=t+1; p<i-1; p++) { for(int q=p+1; q<i; q++) if(check2(element[t],element[p],element[q])) { if(ansnum==0) { printf(" 1. "); printf("%s %s %s\n",element[t],element[p],element[q]); ansnum++; } else { printf(" %d. ",ansnum+1); printf("%s %s %s\n",element[t],element[p],element[q]); ansnum++; } } } } } int main() { #ifdef file freopen("in.txt","r",stdin); freopen("out.txt","w",stdout); #endif // file while(1) { i=0; ansnum=0; if(gets(element[i++])==NULL) break; while(gets(element[i])!=NULL&&strcmp(element[i],"")) { i++; } printf("CARDS: "); for(int j=0; j<i; j++) { printf(" %s",element[j]); } printf("\n"); printf("SETS:"); check3(); if(ansnum==0) { printf(" *** None Found ***\n"); } printf("\n"); } return 0; }
相关文章推荐
- POJ 1053 Set Me 已被翻译
- poj 1053 Set Me 枚举水题
- poj 1122 ZOJ 1053 输出路径的地杰斯特拉
- poj 1122||zoj 1053 FDNY to the Rescue!(最短路)
- POJ 1521 && HDOJ 1053
- poj - 1053 大整数
- hdu-1053-Entropy && poj-1521-Entropy (哈夫曼编码)
- poj1053 模拟
- zoj 1053 && poj 1122 FDNY to the Rescue!
- poj1053
- POJ 1053 Integer Inquiry && HDOJ 1047 Integer Inquiry (大数加法)
- ZPJ - 1053 FDNY to the Rescue!(最短路 Dijkstra),POJ 1122
- POJ 1053 Integer Inquiry (大数加法,还是Java大法好)
- POJ-1053
- POJ 1273 Drainage Ditches(网络流——最大流)
- POJ-1061 青蛙的约会 扩展GCD
- 【Q】【POJ 1059】【POJ 1051】【POJ 1089】
- poj 1069 Intersecting Lines
- POJ 3278 Catch That Cow
- POJ 2826 两线段关系求面积