心如止水
Je n'ai pas le temps
posts - 400,comments - 130,trackbacks - 0
题目大意:给出变量列表和约束关系,计算出所有的可能的大小关系。
比较标准的做法应该构造一个图(这样效率比较高)。不过数据太弱了,直接全排列所有的可能,然后判断是否符合就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)  编辑 收藏 引用 所属分类: 题目分类:搜索题目分类:图论

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理