【UVa】1343 The Rotation Game(IDA*)
题目
分析
lrj代码。。。。
还有is_final是保留字,害的我CE了好几发。
代码
#include <cstdio>
#include <algorithm>
using namespace std;
int line[8][7]={
{ 0, 2, 6,11,15,20,22}, // A
{ 1, 3, 8,12,17,21,23}, // B
{10, 9, 8, 7, 6, 5, 4}, // C
{19,18,17,16,15,14,13}, // D
};
const int rev[8] = {5, 4, 7, 6, 1, 0, 3, 2}; // reverse lines of each line
// center squares
const int center[8] = {6, 7, 8, 11, 12, 15, 16, 17};
int a[24];
char ans[1000];
bool is__final()
{
for(int i=0;i<8;i++)
if(a[center[i]]!=a[center[0]]) return false;
return true;
}
int diff(int target)
{
int ans=0;
for(int i=0;i<8;i++)
if(a[center[i]]!=target) ans++;
return ans;
}
inline int h()
{
return min(min(diff(1),diff(2)),diff(3));
}
inline void move(int i)
{
int tmp = a[line[i][0]];
for(int j = 0; j < 6; j++) a[line[i][j]] = a[line[i][j+1]];
a[line[i][6]] = tmp;
}
bool dfs(int d,int maxd)
{
if(is__final())
{
ans[d]='\0';
printf("%s\n",ans);
return true;
}
if(d+h() > maxd) return false;
for(int i=0;i<8;i++)
{
ans[d]='A'+i;
move(i);
if(dfs(d+1,maxd)) return true;
move(rev[i]);
}
return false;
}
int main()
{
for(int i=4;i<8;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]);
for(int i=0;i<24;i++) if(!a[i]) return 0;
if(is__final()) printf("No moves needed\n");
else
{
for(int maxd=1; ; maxd++)
if(dfs(0,maxd)) break;
}
printf("%d\n",a[6]);
}
return 0;
}
【UVa】1343 The Rotation Game(IDA*)的更多相关文章
- 【UVa】11212 Editing a Book(IDA*)
题目 题目 分析 get一下IDA*的技巧,感觉总体来说不难,主要是剪枝比较难想. 这是lrj的代码,比较通俗易懂,关键就是选定一个区间再取出来,插入到一个位置,接下来转移到这个状态. ...
- 【UVA】10635 Prince and Princess(LCS)
题目 传送门:QWQ 分析 水题.$ O(nlogn) $的LCS 代码 #include <bits/stdc++.h> using namespace std; *, INF=1e9; ...
- 【UVa】1606 Amphiphilic Carbon Molecules(计算几何)
题目 题目 分析 跟着lrj学的,理解了,然而不是很熟,还是发上来供以后复习 代码 #include <bits/stdc++.h> using namespace std; ; stru ...
- 【UVA】12504 Updating a Dictionary(STL)
题目 题目 分析 第一次用stringstream,真TMD的好用 代码 #include <bits/stdc++.h> using namespace std; int ...
- 【BZOJ】1085 [SCOI2005]骑士精神(IDA*)
题目 传送门:QWQ 分析 我好菜啊. 一波IDA*水过去了. 代码 #include <bits/stdc++.h> using namespace std; ; char s[maxn ...
- 【原】FMDB源码阅读(三)
[原]FMDB源码阅读(三) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 FMDB比较优秀的地方就在于对多线程的处理.所以这一篇主要是研究FMDB的多线程处理的实现.而 ...
- 【原】FMDB源码阅读(二)
[原]FMDB源码阅读(二) 本文转载请注明出处 -- polobymulberry-博客园 1. 前言 上一篇只是简单地过了一下FMDB一个简单例子的基本流程,并没有涉及到FMDB的所有方方面面,比 ...
- 【原】FMDB源码阅读(一)
[原]FMDB源码阅读(一) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 说实话,之前的SDWebImage和AFNetworking这两个组件我还是使用过的,但是对于 ...
- 【原】AFNetworking源码阅读(六)
[原]AFNetworking源码阅读(六) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 这一篇的想讲的,一个就是分析一下AFSecurityPolicy文件,看看AF ...
随机推荐
- 转:android Support 兼容包详解
本文转自stormzhang的ANDROID SUPPORT兼容包详解 背景 来自于知乎上邀请回答的一个问题Android中AppCompat和Holo的一个问题?, 看来很多人还是对这些兼容包搞不清 ...
- MySQL 大表在线DML神器--pt-online-schema-change
一个朋友问我在线对大表进行ddl操作,如何做能尽量避免主从延迟以及不影响在线dml操作呢?我想到一个开源的pt-online-schema-change工具,测试了吧,效果还可以. pt-online ...
- Cannot mix incompatible Qt library (version 0x40805) with this library (version 0x40801)
问题描述 今天运行我的 linux 上的 go 语言 IDE liteide 突然报错,错误如下: Cannot mix incompatible Qt library (version 0x4080 ...
- 【干货】Kaggle 数据挖掘比赛经验分享(mark 专业的数据建模过程)
简介 Kaggle 于 2010 年创立,专注数据科学,机器学习竞赛的举办,是全球最大的数据科学社区和数据竞赛平台.笔者从 2013 年开始,陆续参加了多场 Kaggle上面举办的比赛,相继获得了 C ...
- C# ListBox 子项数据更新
今天在倒腾ListBox控件的数据编辑时,遇到了一个小小的问题,现在就把解决方法记录下来,如果各位道友有更好的方法,一定要留言赐教. 问题还原: 有一个界面,有这么一个ListBox用来显示所有的角色 ...
- caffe学习记录2——blobs
参考:caffe官网 2016-01-23 10:08:22 1 blobs,layers,nets是caffe模型的骨架 2 blobs是作者写好的数据存储的“容器”,可以有效实现CPU和GPU之 ...
- phpcms tag页调用缩略图
\phpcms\modules\content\tag.php 找到: 'title, description, url, inputtime, style' 改成:'title, thumb, de ...
- postman简单使用
postman百度网盘下载地址:https://pan.baidu.com/s/1nuO2CGT 下载压缩后 打开chrome输入chrome://extensions/ 把文件拖到浏览器中 启动po ...
- Codeforces 280C Game on tree【概率DP】
Codeforces 280C Game on tree LINK 题目大意:给你一棵树,1号节点是根,每次等概率选择没有被染黑的一个节点染黑其所有子树中的节点,问染黑所有节点的期望次数 #inclu ...
- LOJ#3054. 「HNOI 2019」鱼
LOJ#3054. 「HNOI 2019」鱼 https://loj.ac/problem/3054 题意 平面上有n个点,问能组成几个六个点的鱼.(n<=1000) 分析 鱼题,劲啊. 容易想 ...