| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
为什么总是WA,谁能帮我看看#include <iostream>
#include <vector>
#define oo 1000000
using namespace std;
char str[60];
char rel[200];
char *p;
int map[30][30];
int into[30];
char ele[30];
int cnt;
char ans[30];
void init()
{
cnt=0;
memset(map,0,sizeof(map));
memset(into,0,sizeof(into));
memset(ele,0,sizeof(ele));
}
void dfs(int pos)
{
if(pos==cnt)
{
ans[pos]='\0';
cout<<ans<<endl;
return;
}
vector<int> v;
v.clear();
for(int k=0;k<cnt;k++)
{
char a = ele[k];
if(into[a-'a'] == 0)
{
//cout<<"a:"<<a<<"pos"<<pos<<endl;
ans[pos] = a;
for(int i=0;i<30;i++)
if(map[a-'a'][i] == 1)
{
into[i]--;
v.push_back(i);
}
into[a-'a']=oo;
dfs(pos+1);
while(v.empty()==false)
{
int index = v.back();
into[index]++;
v.pop_back();
}
//if(map[a-'a'][i] == 0)into[i]++;
into[a-'a']=0;
}
}
}
int main()
{
char a,b;
while(cin.getline(str,50))
{
init();
cin.getline(rel,200);
p = strtok(str," ");
if(p)ele[cnt++]=*p;
p = strtok(NULL," ");
while(p)
{
ele[cnt++]=*p;
p = strtok(NULL," ");
}
p = strtok(rel," ");
if(p) a = *p;
p = strtok(NULL," ");
if(p) b = *p;
map[a-'a'][b-'a']=1;
into[b-'a']++;
p = strtok(NULL," ");
while(p)
{
a = *p;
p = strtok(NULL," ");
b = *p;
map[a-'a'][b-'a']=1;
into[b-'a']++;
p = strtok(NULL," ");
}
dfs(0);
cout<<endl;
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator