zoj 1239
程序员文章站
2022-05-20 16:42:05
...
zoj 1239
递归解法
代码块
#include <stdio.h>
#include <memory.h>
#include <math.h>
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;
}