题目大意:给出变量列表和约束关系,计算出所有的可能的大小关系。
比较标准的做法应该构造一个图(这样效率比较高)。不过数据太弱了,直接全排列所有的可能,然后判断是否符合就AC了。
以下是我的代码:
#include<iostream>
#include<string>
#include<algorithm>
#include<cstdio>
#include<cctype>
using namespace std;
const int kMaxn(107);
int main()
{
/*
freopen("data.in","r",stdin);
freopen("data.out","w",stdout);
//*/
int T(0);
string line1,line2;
while(getline(cin,line1) && getline(cin,line2))
{
T++;
if(T!=1)
cout<<endl;
string var;
for(int i=0;i<line1.size();i++)
if(isalpha(line1[i]))
var+=line1[i];
sort(var.begin(),var.end());
int cnt(0);
char ch1,ch2,x[kMaxn],y[kMaxn];
for(int i=0,j=0;i<line2.size();i++)
{
if(isalpha(line2[i]))
{
j++;
if(j&1)
ch1=line2[i];
else
{
ch2=line2[i];
cnt++;
x[cnt]=ch1;
y[cnt]=ch2;
}
}
}
do
{
bool success(true);
for(int i=1;i<=cnt;i++)
if(find(var.begin(),var.end(),y[i])-find(var.begin(),var.end(),x[i])<0)
{
success=false;
break;
}
if(success)
cout<<var<<endl;
}while(next_permutation(var.begin(),var.end()));
}
return 0;
}
posted on 2011-05-27 18:40
lee1r 阅读(425)
评论(0) 编辑 收藏 引用 所属分类:
题目分类:搜索 、
题目分类:图论