算法学习之路|翻转棋

简介: 4*4的翻转棋(翻一个棋子的颜色会同时反转上下左右的棋子颜色),给一个棋盘状况,求把所有棋子翻成同色最少需要翻多少次 输入格式:输入4*4的棋盘,b’代表黑,w代表白

4*4的翻转棋(翻一个棋子的颜色会同时反转上下左右的棋子颜色),给一个棋盘状况,求把所有棋子翻成同色最少需要翻多少次
输入格式:输入4*4的棋盘,b’代表黑,w代表白

输出格式:输出一个数字,表示最少翻多少次,没有解就输出Impossable

输入样例:
bwwb
bbwb
bwwb
bwww

输出样例:
4
解题思路:经典的搜索题,深搜即可。
刚学搜索时写过,但没有ac,重写一次

#include<stdio.h>  
#include<iostream>
#include<algorithm>
using namespace std;  
int chess[4][4];  
int c=33;  
void build()
{  
    char c;  
    int i,j;  
    for(i=0;i<4;i++)  
    for(j=0;j<4;j++)  
    {  
        cin>>c;
        if(c=='w')  
        chess[i][j]=0;  
        else  
        chess[i][j]=1;  
    }  
}  
void turn(int x,int y) 
{  
    if(x>=0&&x<=3&&y>=0&&y<=3)  
    chess[x][y]=!chess[x][y];  
}  
void flip(int s)
{  
    int i=s/4; 
    int j=s%4;
    turn(i,j);  
    turn(i+1,j);  
    turn(i,j+1);  
    turn(i-1,j);  
    turn(i,j-1);  
}  
int judge()
{  
    int i,j,s1=0;  
    for(i=0;i<4;i++)  
        for(j=0;j<4;j++)  
            s1+=chess[i][j];  
    if(s1%16)  
        return 0;  
    else  
        return 1;  
}  
void dfs(int s,int b)
{  
    if(judge()) 
    {  
        if(c>b)  
            c=b;  
        return;  
    }  
    if(s>=16)
        return;  
    dfs(s+1,b);  
    flip(s);  
    dfs(s+1,b+1);  
    flip(s);  
}  
int main()  
{  
    build();
    dfs(0,0);  
    if(c==33)
        printf("Impossible\n");  
    else  
        printf("%d\n",c);  
    return 0;  
}  
目录
相关文章
|
1月前
|
存储 算法 安全
2024重生之回溯数据结构与算法系列学习之串(12)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丟脸好嘛?】
数据结构与算法系列学习之串的定义和基本操作、串的储存结构、基本操作的实现、朴素模式匹配算法、KMP算法等代码举例及图解说明;【含常见的报错问题及其对应的解决方法】你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
2024重生之回溯数据结构与算法系列学习之串(12)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丟脸好嘛?】
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
【EMNLP2024】基于多轮课程学习的大语言模型蒸馏算法 TAPIR
阿里云人工智能平台 PAI 与复旦大学王鹏教授团队合作,在自然语言处理顶级会议 EMNLP 2024 上发表论文《Distilling Instruction-following Abilities of Large Language Models with Task-aware Curriculum Planning》。
|
1月前
|
算法 安全 搜索推荐
2024重生之回溯数据结构与算法系列学习(8)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构王道第2.3章之IKUN和I原达人之数据结构与算法系列学习x单双链表精题详解、数据结构、C++、排序算法、java、动态规划你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
|
1月前
|
存储 算法 安全
2024重生之回溯数据结构与算法系列学习之顺序表【无论是王道考研人还真爱粉都能包会的;不然别给我家鸽鸽丢脸好嘛?】
顺序表的定义和基本操作之插入;删除;按值查找;按位查找等具体详解步骤以及举例说明
|
1月前
|
算法 安全 搜索推荐
2024重生之回溯数据结构与算法系列学习之单双链表精题详解(9)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构王道第2.3章之IKUN和I原达人之数据结构与算法系列学习x单双链表精题详解、数据结构、C++、排序算法、java、动态规划你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
|
1月前
|
存储 Web App开发 算法
2024重生之回溯数据结构与算法系列学习之单双链表【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构之单双链表按位、值查找;[前后]插入;删除指定节点;求表长、静态链表等代码及具体思路详解步骤;举例说明、注意点及常见报错问题所对应的解决方法
|
1月前
|
算法 安全 NoSQL
2024重生之回溯数据结构与算法系列学习之栈和队列精题汇总(10)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构王道第3章之IKUN和I原达人之数据结构与算法系列学习栈与队列精题详解、数据结构、C++、排序算法、java、动态规划你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
|
1月前
|
算法 安全 NoSQL
2024重生之回溯数据结构与算法系列学习之顺序表习题精讲【无论是王道考研人还真爱粉都能包会的;不然别给我家鸽鸽丢脸好嘛?】
顺序表的定义和基本操作之插入;删除;按值查找;按位查找习题精讲等具体详解步骤以及举例说明
|
1月前
|
存储 算法 安全
2024重生之回溯数据结构与算法系列学习【无论是王道考研人还真爱粉都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构的基本概念;算法的基本概念、特性以及时间复杂度、空间复杂度等举例说明;【含常见的报错问题及其对应的解决方法】
|
1月前
|
算法 安全 搜索推荐
2024重生之回溯数据结构与算法系列学习之王道第2.3章节之线性表精题汇总二(5)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
IKU达人之数据结构与算法系列学习×单双链表精题详解、数据结构、C++、排序算法、java 、动态规划 你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!