1. 程式人生 > >II play with GG

II play with GG

https://ac.nowcoder.com/acm/contest/338/I

題解:首先輪到出手的時候如果在(0,0)上肯定是輸的,而(0,1)(1,0)(0,2)(2,0)(1,1)肯定是贏的;

往上遞推,某一個(x,y)如果可以走的(x-1,y)(x,y-1)(x-1,y-1)三點都是必輸的,那麼在(x,y)的人必輸。

 
借大佬程式碼一用

 

#include <bits/stdc++.h>
#include<iostream>
#include<algorithm>
#include<cstdlib>
#
include<cstring> #include<cstdio> #include<string> #include<vector> #include<bitset> #include<queue> #include<deque> #include<stack> #include<cmath> #include<list> #include<map> #include<set> //#define DEBUG #define RI register int
using namespace std; typedef long long ll; //typedef __int128 lll; const int N=1000+10; const int MOD=1e9+7; const double PI = acos(-1.0); const double EXP = 1E-8; const int INF = 0x3f3f3f3f; int t,n,m,k,q,ans; bool a[N][N]; char str; int main() { #ifdef DEBUG freopen("input.in", "r", stdin);
//freopen("output.out", "w", stdout); #endif scanf("%d%d",&n,&m); a[0][0]=0; a[1][0]=a[0][1]=1; a[1][1]=1; for(int i=0; i<=n; i++) { for(int j=0; j<=m; j++) { if(i-1>=0&&j-1>=0) { if(a[i][j-1]&&a[i-1][j]&&a[i-1][j-1]) a[i][j]=0; else a[i][j]=1; } else if(i-1>=0) { if(a[i-1][j]) a[i][j]=0; else a[i][j]=1; } else if(j-1>=0) { if(a[i][j-1]) a[i][j]=0; else a[i][j]=1; } } } if(a[n][m]) { cout << "ii" << endl; } else { cout << "gg" << endl; } //cout << "Hello world!" << endl; return 0; }
View Code

 

 待補充

#include<bits/stdc++.h>
using namespace std;
int main(){
    int m,n;
    cin >> m >>n;
    if(min(m,n)%2) cout <<"ii";
    else if ((max(m,n)-min(m,n))%2==0) cout <<"gg";
    else cout <<"ii";
    
    return 0; 
}
View Code