• WA:csu1108 Flip Game


    在POJ上提交用的是枚举,刚学了bfs

    各种混乱,WA了

    # include <stdio.h>
    # include <string.h>

    # define MAX 65536

    # define INDEX(i) ((i)>>3)
    # define OFFSET(i) ((i)%8)

    # define GET_BIT(i) (vis[INDEX(i)]>>OFFSET(i) & 0x1)
    # define SET_BIT(i) (vis[INDEX(i)] |= 0X1<<OFFSET(i))

    char vis[INDEX(MAX)+1];
    unsigned short Q[MAX+20];
    unsigned short f[] = {0x13,0x27,0x4e,0x8c,0x131,0x272,0x4e4,0x8c8,
    0x1310,0x2720,0x4e40,0x8c80,0x3100,0x7200,0xe400,0xc800
    };

    int flip(unsigned short start, unsigned short x)
    {
    int i;

    for (i = 0; i < 16; ++i)
    if ((x>>i) & 0x1) start ^= f[i];
    if (0==start || 0xff==start) return 1;
    return 0;
    }
    int bfs(unsigned short start)
    {
    unsigned short x;
    int i, front, rear;

    front = 0;
    rear = 1;
    SET_BIT(0);
    while (rear!=front)
    {
    x = Q[front++];
    //printf("front = %d, rear = %d, 0x%x\n", front, rear, x);
    if (flip(start, x)) return x;
    else for (i = 0; i < 16; ++i)
    if ((x>>i) & 0x1) continue;
    else if(!GET_BIT(x+(0x1<<i)))
    {Q[rear++] = x+(0x1<<i);
    SET_BIT(x+(0x1<<i));
    }
    }
    return -1;
    }
    int main()
    {
    unsigned short start, i;
    int chg, ans;
    char ch;

    //freopen("in.txt", "r", stdin);
    //freopen("out.txt", "w", stdout);

    start = i = 0;
    while (i < 16)
    {
    ch = getchar();
    if (ch == 'b')
    {
    start += 0x1<<i;
    //printf("1");
    ++i;
    }
    else if (ch == 'w')
    {
    ++i;
    //printf("0");
    }
    }
    //printf("\n");
    ans = 0;
    chg = bfs(start);
    if (chg == -1) printf("Impossible\n");
    else
    {
    for (i = 0; i < 16; ++i)
    if (chg>>i & 0x1) ++ans;
    printf("%d\n", ans);
    }
    return 0;
    }



  • 相关阅读:
    xgboost系列之应用xgboost的注意事项
    【pandas】pandas.DataFrame.rename()---重置索引名称
    【剑指offer】复杂链表的复制
    【剑指offer】二叉树中和为某一值的路径,C++实现
    设计模式21 访问者模式
    设计模式20 迭代器模式
    设计模式19 中介者模式
    设计模式18 观察者模式
    设计模式17 状态模式
    设计模式16 责任链模式
  • 原文地址:https://www.cnblogs.com/JMDWQ/p/2373185.html
Copyright © 2020-2023  润新知