RT 这串代码放进去是0分 样例都过不了:
#include<bits/stdc++.h>
using namespace std;
int ans=0,x,per[50][2],flag[50]={0},flag2[50]={0};
void dfs(int a){
if (a==x+1) {
ans++; return ;
}
for (int i=1;i<=x;i++){
if (flag[i]==0){
for (int j=0;j<=1;j++){
if (flag2[per[i][j]]==0){
flag[i]=1;
flag2[per[i][j]]=1;
dfs(a+1);
flag2[per[i][j]]=0;
flag[i]=0;
}
}
if (per[i][0]==1&&per[i][1]==1) return ;
}
}
}
int main(){
cin>>x;
for (int i=1;i<=x;i++) cin>>per[i][0]>>per[i][1];
dfs(1);
cout<<ans;
}
但是!
如果把if (per[i][0]==1&&per[i][1]==1)这里改成如下代码:
if (per[i][0]==1&&per[i][1]==1) cout<<endl; return ;
居然一下就AC了 这是什么原理?