本文共 1302 字,大约阅读时间需要 4 分钟。
拍的太慢了,很不满意
排完序之后,枚举自己和对手状态,若被击败,则再枚举自己下一个策略,直到可以击败对手所有的策略
#include #include #include #include #include #include #include using namespace std;#define MOD 1000000007const int INF=0x3f3f3f3f;const double eps=1e-5;typedef long long ll;#define cl(a) memset(a,0,sizeof(a))#define ts printf("*****\n");const int MAXN=1005;int n,m,tt;int g[15][15];int a1[15]={ 0,1,2,3,4,5,6};int a2[15]={ 0,1,2,3,4,5,6};bool check(){ int t1=0; int t2=0; bool flag=0; while(1) { if(g[a2[t2]][a1[t1]]) { t1++; } else t2++; if(t1==n) { flag=0; break; } if(t2==n) { flag=1; break; } } if(!flag) return 0; else return 1;}int main(){ int i,j,k,ca=1; #ifndef ONLINE_JUDGE freopen("1.in","r",stdin); #endif scanf("%d",&tt); while(tt--) { printf("Case %d: ",ca++); map mp1; map mp2; scanf("%d",&n); string s[15]; for(i=0;i >s[i]; } sort(s,s+n); for(i=0;i >sw; int v=mp1[sw]; g[i][v]=1; //有克制关系 } } for(i=0;i<15;i++) a1[i]=i,a2[i]=i; bool flag=1; bool w=0; while(1) { flag=1; while(1) { if(!check()) //该策略被击败 { flag=0; } if(!next_permutation(a2,a2+n)) break; } if(flag) { w=1; break; } if(!next_permutation(a1,a1+n)) break; } if(w) { printf("Yes\n"); cout<
转载于:https://www.cnblogs.com/cnblogs321114287/p/4721626.html