マシンテストにおけるゴバンの判断問題

2つの主流のアイデア:

1.ボードを直接スキャンして、4方向に1つずつトラバースします。これは面倒なだけでなく、ばかげています。

2.子供を落とすたびに、子供の4つの方向が直接判断され、左右の方向を1つの方向に合計できます。

 

#include <iostream> 
#include <vector> 
#include < string >
 using  namespace std; 

const  int maxn = 13 ;
int ma [maxn] [maxn]; 

void printma(){
     forint i = 0 ; i <maxn; i ++ ){
         forint j = 0 ; j <maxn; j ++ ){
             if(ma [i] [j] == 1 ){ 
                cout << " o " ; 
            }
            else  if(ma [i] [j] ==- 1 ){ 
                cout << " x " ; 
            } 
            else { 
                cout << " " ; 
            } 
            cout << "  " ; 
        } 
        cout << endl; 
    } 
} 

int henc(int x、int y){
     int cnt = 0 ;
    forinti = x; i <maxn && ma [x] [y] == ma [i] [y]; i ++ ){ 
        cnt ++ ; 
    } 
    forint i = x- 1 ; i> = 0 && ma [x] [y] == ma [i] [y]; i-- 
        cnt ++ ;
    cntを返します。
} 

int shuc(int x、int y){
     int cnt = 0 ;
    forint i = y; i <maxn && ma [x] [y] == ma [x] [i]; i ++ ){ 
        cnt ++ ; 
    } 
    forinti = y- 1 ; i> = 0 && ma [x] [y] == ma [x] [i]; i-- 
        cnt ++ ;
    cntを返します。
} 

int xzc(int x、int y){
     int cnt = 0 ;
    forint i = x、j = y; i <maxn && y <maxn && ma [x] [y] == ma [i] [j]; i ++、j ++ ){ 
        cnt ++ ; 
    } 
    forint i = x- 1、j = y- 1 ; i> = 0 && y> = 0 && ma [x] [y] == ma [i] [j]; i--、j--){ 
        cnt ++ ; 
    } 
    return cnt; 
} 

int xyc(int x、int y){
     int cnt = 0 ;
    forint i = x、j = y; i> = 0 && y <maxn && ma [x] [y] == ma [i] [j]; i--、j ++ ){ 
        cnt ++ ; 
    } 
    forint i = x、j = y; i <maxn && y> = 0 && ma [x] [y] == ma [i] [j]; i ++、j-- ){ 
        cnt ++ ; 
    } 
    return cnt; 
}

bool charge(int x、int y){
     if(henc(x、y)== 5 || shuc(x、y)== 5 || xzc(x、y)== 5 || xyc(x、y )== 5 trueを返し ますそれ以外の場合は
        falseを返し ます
} 

int main(){
     int x、y;
    int f = 1 ;
    while1 ){ 
        cin >> x >> y; 
        ma [x] [y] = f; 
        printma(); 
        もし(charge(x、y)){
             if(f == 1 ){ 
                cout << " 黑o胜利" << endl; 
            } 
            else { 
                cout << " 白x胜利" << endl; 
            } 
            休憩; 
        } 
        f = -f; 
    } 
    return  1 ; 
}

 

おすすめ

転載: www.cnblogs.com/songlinxuan/p/12688294.html