http://acm.pku.edu.cn/JudgeOnline/problem?id=1053
Код:
#include<iostream>
#include<string.h>
using namespace std;
char card[1000][20];
bool judge (int i,int j,int k) {
int p;
for(p=0;p<4;p++)
if(!(
card[i][p]==card[j][p]&&card[i][p]==card[k][p]&&card[j][p]==card[k][p]||
card[i][p]!=card[j][p]&&card[i][p]!=card[k][p]&&card[j][p]!=card[k][p]
)) return false;
return true; }
int main() {
int n;
do{
n=0;
cin.getline(card[n++],100);
if(!cin)break;
while(strlen(card[n-1])==4) cin.getline(card[n++],100);
n--;
int i,j,k,num;
num=0;
cout<<"CARDS: ";
for(i=0;i<n;i++) cout<<' '<<card[i]; cout<<endl;
cout<<"SETS: ";
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
for(k=j+1;k<n;k++) {
if(judge(i,j,k)) {
num++;
if (num>1) cout<<" ";
cout<<num<<". "<<card[i]<<' '<<card[j]<<' '<<card[k]<<endl;
} }
if(num==0) {cout<<"*** None Found ***"<<endl; }
cout<<endl;
}while(cin);
}