UVA1343TheRotationGame

6 篇文章 0 订阅
4 篇文章 0 订阅
//UVA1343TheRotationGame
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
const int MAXN = 30;
int maxd;
int a[MAXN];
char ans[100];
int line[8][7] = {
    {22, 20, 15, 11, 6, 2, 0 },
    {23, 21, 17, 12, 8, 3, 1 },
    {4,   5,  6,  7, 8, 9, 10},
	{13, 14, 15, 16,17,18, 19},
};
int rev[8] = {5, 4, 7, 6, 1, 0, 3, 2};
int centre[8] = {6, 7, 8, 12, 17, 16, 15, 11};
bool Is_final() {
	int tmp = a[centre[0]];
	for(int i = 0; i < 8; i++) if(a[centre[i]] != tmp) return false;
	return true;  
}
int Diff(int target) {
	int cnt = 0;
	for(int i = 0; i < 8; i++) if(a[centre[i]] != target) cnt++;
	return cnt;
}
int h() {
	return min(Diff(1), min(Diff(2), Diff(3)));
}
void Move(int b) {
	int tmp = a[line[b][6]];
	for(int i = 5; i >= 0; i--) a[line[b][i + 1]] = a[line[b][i]];
	a[line[b][0]] = tmp;
} 
bool dfs(int d) {
	if(Is_final()) {
		//printf("ans[d]%c, d = %d\n", ans[d], d);
	    ans[d] = 0;
	    return true;
	}
	if(d + h() > maxd) return false;
	for(int i = 0; i < 8; i++) {
		ans[d] = i + 'A';
		//printf("**%c, d = %d\n",  ans[d], d);
		int olda[MAXN];
	    //memcpy(olda, a, sizeof(a));
		Move(i);
		if(dfs(d + 1)) return true;
		Move(rev[i]);//当搜索失败时消去影响
		//memcpy(a, olda, sizeof(a));
	}
	return false;
}
int main() {
	for(int i = 4; i <= 7; i++) {
		for(int j = 0; j < 7; j++) {
			line[i][j] = line[rev[i]][6 - j];
		}
	}
	while(scanf("%d", &a[0]) == 1 && a[0]) {
		for(int i = 1; i < 24; i++) scanf("%d", &a[i]);
		if(Is_final()) printf("No moves needed\n%d\n", a[centre[0]]);
		else {
		    for(maxd = 1; ; maxd++) {
			    if(dfs(0)) { printf("%s\n%d\n", ans, a[centre[0]]);/* for(int i = 0; i < 24; i++) printf("%2d", a[i]); printf("\n");*/ break; }
		    }
	    }
	}
	return 0;
}
/*

*/

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。、可私 6信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。、可 6私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。、可私 6信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值