POJ1753:翻棋子

该博客介绍了如何解决POJ1753翻棋子问题,使用C语言实现深度优先搜索(DFS)策略,通过迭代回溯判断棋盘是否达到“清一色”状态,并给出具体代码实现。
摘要由CSDN通过智能技术生成
#include <stdio.h>
#include <stdlib.h>
#define SIZE 4
char chess[SIZE+2][SIZE+2] = {
  {},{' ','b','w','w','b',' '},{' ','b','b','w','b',' '},{' ','b','w','w','b',' '},{' ','b','w','w','w',' '},{}};


bool flag;
int step;
int r[5]={-1,1,0,0,0};//便于翻棋操作 上  下 左 右 当前位置
int c[5]={0,0,-1,1,0};

bool judge_all(void)//判断“清一色”
{
	int i,j;
	for(i=1;i<SIZE+1;i++)
		for(j=1;j<SIZE+1;j++)
			if(chess[i][j]!=chess[1][1])
				return false;
	return true;
}

void flip(int row,int col)//翻棋
{
	int i;
	for(i=0;i<5;i++)
		chess[row+r[i]][col+c[i]]=!chess[row+r[i]][col+c[i]];
	return;
}

void dfs(int row,int col,int deep) //深搜的迭代回溯是重点,很容易混乱
{
	if(deep==step)
	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值