zoj 1239
递归解法
代码块
int a[
51]=
{0};
//pegs
int disc=
0;
int num=
0;
int l;
int judge(
int x,
int y){
//判断平方数
int m;
int temp;
m=
x+
y;
temp=
sqrt(
m);
if(temp
*temp==
m)
return 1;
else
return 0;
}
int hanoi_again(
int a[],
int last){
int i=
0;
int j=
0;
for(i=
0;i<
last;i++){
if(judge(a[i],disc)){
a[i]=disc;
disc++;
return hanoi_again(a,
last);
}
}
if(
last<num){
a[
last]=disc;
disc++;
last++;
return hanoi_again(a,
last);
}
else{
return disc;
}
}
int main(){
int n;
scanf(
"%d",&n);
while(n--){
scanf(
"%d",&num);
disc=
1;
l=
1;
memset(a,
0, sizeof(a));
printf(
"%d\n",hanoi_again(a,l)-
1);
}
return 0;
}
转载请注明原文地址: https://www.6miu.com/read-2629207.html