还剩2页未读,继续阅读
文本内容:
递归实验答案实验public class5_1{dp=static int[]new int
[100];//解法1public static int solvelint nif n==1return1;if n==2return2;solvel solvelreturn n-1+n-2;}//解法2public staticint solve2int nifdp[n]!=0return dp[n];if n==1{;dp[l]=1return dp
[1];if n==2{dp
[2]=2;dp
[2];returnsolve2solve2dp[n]=n-1+n-2;return dp[n];//解法3public staticint solve3int ndp[l]=1;dp
[2]=2;for int i=3;i=n;i++dp[i]=dp[i-1]+dp[i-2];return dp[n];}//解法4public staticint solve4int n//对应f n-2int a=1;//对应fn—lint b=2;//对应f nintc=0;if n==1return1;if n==2return2;for inti=3;i=n;i++{c=a+b;a=b;b=c;return c;public staticvoid mainString[]args{int n=10;HSystem.out.printf\n n=%d\n n;r解法solveln nSystem.out.printf1:%d\n,n;解法solve2System,out.printf2:%d\nn,n;解法solve3System,out.printf3:%d\nH,n;角转去solve4System.out.printf H4:%d\nn;r实验public class5_2{Nstatic int=21;q=[N];staticint[]new int为存放实际皇后个数n;//nstatic int//累计解个数entstatic int=0;//输出皇后问题的一个解npublic staticvoid dispasolution第%^个解”,System.out.print f++cnt;for inti=1;i=n;i++System.out.printf%d,%d,i,q[i];outSystem..printin;public staticint absint xreturnx0x:-x;//测试位置能否摆放皇后i/jintpublic staticboolean place inti,//第一个皇后总是可以放置if i==1return true;int k=1;是已放置了皇后的行while ki//k=l〜if q[k]==j||absq[k]j==absi-kreturn false;k++;return true;//放置的皇后1〜ipublic staticvoid queeninti nifi dispasolution;//所有皇后放置结束else{//在第行上试探每一个列i jforint j=1;j=n;j++//在第行上找到一个合适位置placeii,jif j{queenq[i]=j;i+1;public staticvoid mainString[]args{n=6;皇后问题解n;nSystem,out.printf\n%d\n,//放置的皇后queen1〜1;n。