| ||||||||||
| 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,给的那些测试数据都是对的,但就是WA,高手麻烦给看看:#include <iostream>
#include <fstream>
using namespace std;
int row,col;
int data[1000][1000];//保存白颜色的格子
int mark[1000]; //标记第j列是否已经选过了
int coln[1000]; //记录每一列的第一个白格子的首地址,方便最后输出。
int result[1000]; //记录被选中的第j列的相应的行数 i
bool compute(int p){ //第p行
if(p>row)return true;
else{
for(int j=1;j<=col;j++){
if(data[p][j]==1&&mark[j]==0){
mark[j]=1;
result[j]=p;
int test=compute(p+1);
if(test)return true;
mark[j]=0;
}
}
if(j==col+1)return false;
}
return false;
}
void main(){
// ifstream cin("data.txt");
int testcase;
cin>>testcase;
for(int i=0;i<testcase;i++){
cin>>row>>col;
memset(data,0,sizeof(data));
memset(result,0,sizeof(result));
memset(mark,0,sizeof(mark));
memset(coln,0,sizeof(coln));
for(int j=1;j<=col;j++){
int x1,x2;
cin>>x1>>x2;
data[x1][j]=1;
data[x2][j]=1;
coln[j]=x1;
}
bool test=compute(1);
if(test){
for(int tmp=1;tmp<col;tmp++){
if(result[tmp]==0){
cout<<coln[j]<<" "; //随意输出一个
}else{
cout<<result[tmp]<<" ";
}
}
if(result[col]==0){
cout<<coln[col]<<endl;
}else{
cout<<result[col]<<endl;
}
//cout<<"Yes"<<endl;
}else cout<<"No"<<endl;
}
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator