can give me some test case.
Code: Select all
#include <iostream>
using namespace std;
int n;
int mn;
int b[150000][10];
void cut(int a,int avval,int akhar,int ja)
{
for(int i=1;i<ja;i++)
b[a+1][i]=b[a][i];
int pointer=ja;
for(int i=avval;i<=akhar;i++)
b[a+1][pointer++]=b[a][i];
for(int i=ja;i<avval;i++)
b[a+1][pointer++]=b[a][i];
for(int i=akhar+1;i<=n;i++)
b[a+1][pointer++]=b[a][i];
}
void tabe(int a,int i,int shomar)
{
if(i==n)
{
if(mn>shomar)
mn=shomar;
return;
}
if(b[a][i]==i)
{
tabe(a,i+1,shomar);
return ;
}
int pointer=1;
while(b[a][pointer]!=i)
pointer++;
for(int j=0;j<=n-pointer;j++)
{
cut(a,pointer,pointer+j,i);
tabe(a+1,i+1,shomar+1);
}
return ;
}
int main()
{
int u=1;
while(cin>>n,n)
{
for(int i=0;i<1500;i++)
for(int j=0;j<=9;j++)
b[i][j]=0;
mn=10;
for(int i=1;i<=n;i++)
cin>>b[0][i];
tabe(0,1,0);
cout<<"Case "<<u++<<": "<<mn<<endl;
}
return 0;
}