#include <cstdio>
#include <cstring>
#include <iostream>
#include <cmath>
using namespace std;
int ans_flag = 0,n,case_num;
int book_shell[20];
//H函数为某一个值后继值错位的个数:1的后继值为2,如果1的后继值不为2,则表示错位。进行一次交换只能改变三个值的后继值,i-1,j,k
int H(int book[])
{
int sum = 0;
for(int i = 0;i<n-1;i++)
{
if(book[i+1] != book[i]+1)
sum++;
}
if(book[n-1] != n)
sum++;
return ceil(((double)sum/3));
}
//书籍交换 把[i,j]的书 和 [j+1,k]的书交换
void Book_swap(int book[],int s,int m,int e)
{
int tmp[20],tmp_index = s;
for(int i = m+1;i<=e;i++,tmp_index++)
tmp[tmp_index] = book[i];
for(int i = s;i<= m;i++,tmp_index++)
tmp[tmp_index] = book[i];
POJ 3460 IDA*
最新推荐文章于 2020-02-01 18:26:36 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)