爬格子呀4-1

阉割版
少了半边车马炮,没考虑马在边角的情况,没考虑吃子的情况
代码如下:

#include<stdio.h>

struct xinxi{
    int che1, che2, ma1, ma2, pao1, pao2, bjiang1 = 3, bjiang2 = 3, rjiang1 = 10, rjiang2 = 3;
};

int che(xinxi wz2){
    if (wz2.che1 == wz2.rjiang1 || wz2.che2 == wz2.rjiang2) 
        return 1;
}

int ma(xinxi wz2){
    int i, j;
    for (j = 0; j < 2; j++) {
        for (i = 0; i < 2; i++) {
            wz2.ma1 -= 1; wz2.ma2 -= 2;
            if (wz2.ma1+i*2==wz2.rjiang1&&wz2.ma2+j*2==wz2.rjiang2)
                return 1;
            wz2.ma1 += 2;
            if (wz2.ma1 - i * 2 == wz2.rjiang1&&wz2.ma2 + j * 2 == wz2.rjiang2)
                return 1;
        }
    }
}

int pao(xinxi wz2){
    if (wz2.che1 == wz2.pao1 || wz2.che2 == wz2.pao2 || wz2.ma1 == wz2.pao1 || wz2.ma2 == wz2.pao2 || wz2.bjiang1 == wz2.pao1 || wz2.bjiang2 == wz2.pao2)
    {
        if (wz2.pao1 == wz2.rjiang1 || wz2.pao2 == wz2.rjiang2) { return 1; }
    }
    else return 3;
}

int jiang(xinxi wz2){
    if (wz2.che2 != wz2.bjiang2&&wz2.ma2 != wz2.bjiang2&&wz2.pao2 != wz2.bjiang2&&wz2.bjiang2 == wz2.rjiang2)
        return 1;
}

int check(xinxi wz2) {
    return che(wz2) && ma(wz2) && che(wz2) && jiang(wz2);
}

int main() {
    xinxi wz;
    int i, j;
    scanf_s("%d%d%d%d%d%d", &wz.che1, &wz.che2, &wz.ma1, &wz.ma2, &wz.pao1, &wz.pao2);
    scanf_s("%d%d%d%d", &wz.bjiang1, &wz.bjiang2, &wz.rjiang1, &wz.rjiang2);

    switch (wz.rjiang2) {
    case 8: wz.rjiang2 += 1; if (check(wz))printf("1");
    case 9: wz.rjiang2 += 1; check(wz); wz.rjiang2 -= 2; if (check(wz))printf("1");
    case 10: wz.rjiang2 -= 1; if (check(wz))printf("1");
    }
    switch (wz.rjiang1) {
    case 3: wz.rjiang1 += 1; if (check(wz))printf("1");
    case 4: wz.rjiang1 += 1; check(wz); wz.rjiang1 -= 2; if (check(wz))printf("1");
    case 5: wz.rjiang1 -= 1; if (check(wz))printf("1");
    }
    return 0;
}
原文地址:https://www.cnblogs.com/romaLzhih/p/9489872.html