`
dailygoing
  • 浏览: 4467 次
社区版块
存档分类
最新评论

uva11212 Editing a Book启发状态搜索

 
阅读更多
#include<iostream>
#include<vector>
#include<ctime>
#include<algorithm>
#include<cstdio>
using namespace std;
int n, maxd;

int wrongn(int *p, int a, int b) {
	int t = 0;
	for (int i = a; i < b; i++) {
		if (p[i + 1] - p[i] != 1) t++;
	}
	return t;
}

bool dfs(int h, int act, int *perm) {
	int i, j, st, ed, k, a, b, temp[12];
	/*if (!wrongn(perm, st, ed ))
	if (perm[st] - 1 == perm[perm[st] - 1] || perm[ed] + 1 == perm[perm[ed] + 1])
	return 0;//不拆分连续数字
	*/
	if (act--) {
		temp[0] = temp[n + 1] = 0;
		for (st = 1; st <= n; st++)
			for (ed = st + 1; ed <= n + 1; ed++) {
				for (k = 1; k <= n + 1; k++) {
					if (k > ed) {
						j = 1;
						for (i = 1; i < st; i++) temp[j++] = perm[i];
						for (i = ed; i<k; i++) temp[j++] = perm[i];
						for (i = st; i < ed; i++) temp[j++] = perm[i];
						for (i = k; i <= n; i++) temp[j++] = perm[i];
					}
					else if (k < st) {
						j = 1;
						for (i = 1; i < k; i++) temp[j++] = perm[i];
						for (i = st; i < ed; i++) temp[j++] = perm[i];
						for (i = k; i<st; i++) temp[j++] = perm[i];
						for (i = ed; i <= n; i++) temp[j++] = perm[i];
					}
					else continue;

					a = wrongn(temp, 1, n);
					if (!a) return true;
					if (a > h) continue;
					if (a > 3 * act) continue;
					if (dfs(a, act, temp)) {
						//cout << i << ' ' << i + j << "->" << k << endl;
						return true;
					}
				}

			}
	}
	return 0;
}

void solve(int T) {
	int i, j, k, h, ss;
	int perm[12];
	perm[0];
	for (i = 1; i <= n; i++)
		scanf("%d", &perm[i]);
	perm[0] = perm[n + 1] = 0;
	h = wrongn(perm, 1, n);
	if (!h) {
		printf("Case %d: 0\n", T); return;
	}
	for (maxd = 1; ; maxd++) {
		if (h > 3 * maxd) continue;
		if (dfs(h, maxd, perm)) {
			printf("Case %d: %d\n", T, maxd);
			return;
		}
	}
}

int main()
{
	int T = 0;
	//clock_t start, stop;
	//start = clock();
	while (scanf("%d", &n) == 1 && n) {
		solve(++T);
	}
	//stop = clock();
	//printf("Use Time:%ld\n", (double)(stop - start));

	return 0;
}
//system("pause");

/*
2
2 1
6
2 4 1 5 3 6
5
3 4 5 1 2
9
9 8 7 6 5 4 3 2 1
0

*/

 

分享到:
评论

相关推荐

    Adobe Photoshop CS2 Classroom in a Book

    and a companion CD with all of the book's project files make learning a breeze as the Adobe Creative Team takes you on a self-paced tour of the image-editing powerhouse. This bestselling guide has ...

    PoisonImage.zip_editing_image editing

    之前我发了数篇系列博文来仔细研究Poisson Image Editing算法,每次重新审视和深入,仿佛都能有更为深刻的认识和很大的收获。这应该算是我这个系列的完结篇,会用用Matlab代码一点一点的演示,原文作者到底是如何...

    Photo Editing Extension Demo

    《iOS中的Photo Editing Extension开发详解》 在移动设备上,照片编辑已经成为日常操作的一部分,而iOS平台提供了强大的扩展机制,让开发者能够自定义照片编辑体验。"Photo Editing Extension Demo"是苹果官方提供...

    Digital Audio Editing Fundamentals 无水印pdf 0分

    This book is a new media mini-book covering concepts central to digital audio editing using the Audacity 2.1.1 open source software package which also apply to all of the professional audio editing ...

    英文原版-Digital Video Editing Fundamentals 1st Edition

    A unique compact book on digital video editing fundamentalsCovers digital video file formats and data footprint optimizationTeaches you how to build a production pipeline,解压密码 share.weimo.info

    Film Editing.zip

    【标题】"Film Editing.zip" 是一个专门针对影视剪辑的教育资源,主要以PPT的形式呈现,适合初学者快速入门。这个压缩包包含了丰富的影视剪辑知识,通过精美的画面和配套的剪辑视频,让学习者能在较短的时间内(15-...

    波西米亚编辑器工具BI EDITING TOOLS

    **波西米亚编辑器工具BI EDITING TOOLS详解** BI EDITING TOOLS是由波西米亚互动(Bohemia Interactive)开发的一款专业级游戏编辑工具,主要用于游戏模组制作、资源打包和3D模型创建。这个强大的工具集是专为那些...

    Samsung Editing Assets2.2.82.5.apk

    Samsung Editing Assets2.2.82.5.apk

    the craft of text editing

    根据给出的文件信息,文件标题为“the craft of text editing”,描述是“the craft of text editing 一本电子书。放在这里收藏。”标签也是“the craft of text editing”,而【部分内容】中呈现的内容由于OCR技术...

    chrome office editing

    标题“Chrome Office Editing”指的是在Google Chrome浏览器上编辑Microsoft Office文档的功能。这通常涉及到使用特定的Chrome插件或扩展程序,这些程序允许用户在浏览器环境中直接打开、编辑和保存Word、Excel、...

    evil-cleverparens, editing语言的Evil正常状态 minor 正在进行中,工作.zip

    evil-cleverparens, editing语言的Evil正常状态 minor 正在进行中,工作 邪恶 cleverparensevil-cleverparens 为编辑Lisp而优化的模式编辑。 它的工作原理如下:如果有用的话,可以以防止将括号和它的他分隔符的顺序...

    poisson_image_editing.rar_editing

    《Poisson Image Editing:艺术性对象插入的无缝融合技术》 在数字图像处理领域,Poisson Image Editing是一种先进的图像编辑技术,尤其在艺术性对象插入方面展现出强大的能力。这项技术的核心在于它能以一种几乎...

    success-128-switch-editing.zip_editing

    标题中的"success-128-switch-editing.zip_editing"暗示了这是一个关于编辑与修改的项目,可能涉及数字电路设计,特别是与128个开关有关的系统。描述提到"controlling D flipflop circuit",这直接指向了数字电子...

    BI_Editing_Tools_2_5_1游戏编辑工具

    《BI_Editing_Tools_2_5_1:武装突袭3的游戏编辑利器》 在游戏开发和自定义内容创作领域,有一款名为BI_Editing_Tools_2_5_1的强大工具,它是针对军事模拟游戏《武装突袭3》的专业编辑套件。这款工具集成了丰富的...

    Poisson_Image_Editing

    MATLAB代码中的"Poison_Image_Editing"可能包含了这些步骤的实现,通过阅读和理解代码,可以学习如何利用MATLAB进行复杂的图像处理任务。此外,该代码可能还提供了参数调整,以适应不同的应用场景和用户需求。 总的...

    core-editing.rar_editing

    在这个"core-editing.rar_editing"压缩包中,我们可以看到一个关于JSF的应用实例,特别关注了核心编辑功能,包括增、删、改、查以及分页操作。 首先,**增删改查(CRUD)**是任何数据库应用的基本操作。在JSF中,...

    Poisson Image Editing

    泊松图像编辑(Poisson Image Editing)是一种创新的图像处理技术,它利用基于求解泊松方程的通用插值机制,引入了一系列新颖工具,用于无缝编辑图像区域。此方法能够实现对选定区域的局部修改,无论是导入不透明或...

Global site tag (gtag.js) - Google Analytics