zoukankan      html  css  js  c++  java
  • poj1166

    爆搜就可以过,不过我用了迭代加深。

    注意每个操作最多进行4次

    #include <cstdio>
    #include <cstdlib>
    using namespace std;
    
    #define MAX_ANS 100
    
    int clock[9];
    char move[9][10] = {"ABDE", "ABC", "BCEF", "ADG", "BDEFH", "CFI", "DEGH", "GHI", "EFHI"};
    int ans[MAX_ANS], ans_num;
    
    void input()
    {
        for (int i = 0; i < 9; i++)
            scanf("%d", &clock[i]);
    }
    
    void output()
    {
        printf("%d", ans[0]);
        for (int i = 1; i < ans_num; i++)
            printf(" %d", ans[i]);
        putchar('
    ');
    }
    
    bool ok()
    {
        for (int i = 0; i < 9; i++)
            if (clock[i])
                return false;
        return true;
    }
    
    void make(char* move, int value)
    {
        for (int i = 0; move[i]; i++)
        {
            int index = move[i] - 'A';
            clock[index] = (clock[index] + value + 4) % 4;
        }
    }
    
    void dfs(int step, int limit, int move_index)
    {
        if (step > limit)
            return;
        if (ok())
        {
            output();
            exit(0);
        }
        for (int i = move_index; i < 9; i++)
        {
            for (int j = 0; j < 3; j++)
            {
                make(move[i], 1);
                ans[ans_num++] = i + 1;
                dfs(step + 1, limit, i + 1);
            }
            ans_num -= 3;
            make(move[i], -3);
        }
    }
    
    int main()
    {
        input();
        for (int i = 0; i < 100; i++)
        {
            ans_num = 0;
            dfs(0, i, 0);
        }
        return 0;
    }
    View Code
  • 相关阅读:
    实现分布式爬虫
    hadoop安装文档
    远程连接mysql和redis配置
    scrapy(2)
    10月10号动手动脑
    10月6日和动手动脑
    10月4日
    课程总结
    又学java的第一天
    第一节测试总结
  • 原文地址:https://www.cnblogs.com/rainydays/p/3495321.html
Copyright © 2011-2022 走看看