算法设计与分析第三章课后答案吕国英主编

算法设计与分析第三章课后答案吕国英主编
算法设计与分析第三章课后答案吕国英主编

2、#include

void main()

{

int a[6][6],b[6],i,j;

printf("请输入6个整数:");

for(i=0;i<6;i++)

{

scanf("%d",&b[i]);

}

for(i=0;i<6;i++)

{

a[0][i]=b[i];

}

for(i=1;i<=5;i++)

a[i][0]=b[6-i];

for(i=1;i<=5;i++)

for(j=1;j<=5;j++)

{

a[i][j]=a[i-1][j-1];

}

for(i=0;i<=5;i++)

{

for(j=0;j<=5;j++)

printf("%d ",a[i][j]);

printf("\n");

}

}

3、#include

void main()

{

int i,j,count,n;

int a[100][100];

printf("请输入矩阵的阶n=");

scanf("%d",&n);

count=1;

for(i=1;i<=n/2;i++)

{

for(j=i;j<=n-i+1;j++)//上侧

{

a[i][j]=count;

count++;

}

for(j=i+1;j<=n-i;j++)//右侧

{

a[j][n-i+1]=count;

count++;

}

for(j=n-i+1;j>=i+1;j--)//下侧

{

a[n-i+1][j]=count;

count++;

}

for(j=n-i+1;j>=i+1;j--)//左侧

{

a[j][i]=count;

count++;

}

}

if(n%2==1)

{

i=(n+1)/2;

a[i][i]=n*n;

}

for(i=1;i<=n;i++)

{

for(j=1;j<=n;j++)

printf("%2d ",a[i][j]);

printf("\n");

}

}

4、#include

void main()

{

int i,j,n,a[100][100],count=1;

printf("请输入方阵的阶n:");

scanf("%d",&n);

for(i=1;i<=n;i++)

for(j=1;j<=i;j++)

{

a[i-j+1][j]=count;

count++;

}

for(i=1;i<=n;i++)

{

for(j=1;j<=n-i+1;j++)

printf("%4d",a[i][j]);

printf("\n");

}

}

5、#include

void main()

{

int i,j,count,n;

int a[100][100];

printf("请输入矩阵的阶n=");

scanf("%d",&n);

count=1;

for(i=1;i<=n/2;i++)

{

for(j=i;j<=n-i+1;j++)//上侧

{

a[i][j]=count;

}

for(j=i+1;j<=n-i;j++)//右侧

{

a[j][n-i+1]=count;

}

for(j=n-i+1;j>=i+1;j--)//下侧

{

a[n-i+1][j]=count;

}

for(j=n-i+1;j>=i+1;j--)//左侧

{

a[j][i]=count;

}

count++;

}

if(n%2==1)

{

i=(n+1)/2;

a[i][i]=i;

}

for(i=1;i<=n;i++)

{

for(j=1;j<=n;j++)

printf("%2d ",a[i][j]);

printf("\n");

}

}

10、狼找兔子问题:一座山周围有n个洞,顺时针编号为0,1,2.,…,

n-1。一只狼从0号洞开始,顺时针方向计数,每当经过第m个洞时,就进洞找兔子。输入m,n,问兔子有没有幸免的机会?如果有,该藏哪里?

#include

void main(){

int a[100],b[100],i,n,m,k=0,flag=0;

printf("请输入洞的个数n:");

scanf("%d",&n);

printf("请输入要经过洞的个数m:");

scanf("%d",&m);

for(i=0;i

a[i]=0;

b[i]=1;

}

for(i=0;;i=(i+m)%n){

if(a[(i+m)%n]==0)

a[(i+m)%n]=1;

else

if(a[(i+m)%n]==1)

break;

}

for(i=0;i

if(a[i]==0)

k++;

else

if(a[i]==1)

flag++;

}

if(k>0){

printf("\n兔子有幸免的机会,位置为:\n");

for(i=0;i

if(a[i]==0)

printf("%d ",i);

printf("\n");

}

if(flag==n)

printf("兔子没有幸免的机会!\n");

}

12、有52张牌,使它们全部正面朝上,第一轮是从第2张开始,凡是2的倍数位置上的牌翻成正面朝下;第二轮从第3张牌开始,凡是3的倍数位置上的牌,正面朝上的翻成正面朝下,正面朝下的翻成正面朝上;第三轮从第4张牌开始,凡是4的倍数位置上的牌按上面相同规则翻转,以此类推,知道翻的牌超过104张为止。统计最后有几张牌正面朝上,以及它们的位置号。

#include

void main(){

int a[100],i,sum,k,n=0;

for(i=0;i<100;i++)

a[i]=1;

sum=0;

for(i=2;i<53;i++){

k=1;

while(i*k<53&&sum<=104){

a[i*k]=-a[i*k];

k=k+1;

++sum;

}

}

printf("正面朝上的牌的位置为\n");

for(i=1;i<53;i++)

if(a[i]==1){

n++;

printf("%d ",i);

}

printf("\n");

printf("总共%d张牌\n",n);

}

13、A,B,C,D,E5人为某次竞赛的前五名,他们在公布名次前猜名次。

A说:B得第三名,C得第五名。

B说:D得第二名,E得第四名。

C说:B得第一名,E得第四名。

D说:C得第一名,B得第二名。

A说:D得第二名,A得第三名。

结果每个人都猜对了一半,实际名次是什么呢?

#include

void main(){

int a,b,c,d,e;

for(a=1;a<=5;a++)

for(b=1;b<=5;b++)

if(a!=b)

for(c=1;c<=5;c++)

if(c!=a&&c!=b)

for(d=1;d<=5;d++){

if(d!=a&&d!=b&&d!=c)

e=15-a-b-c-d;

if(e!=a&&e!=b&&e!=c&&e!=d)

if((b==3)+(c==5)==1&&(d==2)+(e==4)==1&&(b==1)+(e==4)==1&&(c==1)+(

b==2)==1&&(d==2)+(a==3)==1)

{

printf("五人的名次分别为:\n");

printf("A\tB\tC\tD\tE\n");

printf("%d\t%d\t%d\t%d\t%d\n",a,b,c,d,e);

}

}

}

14、#include

void main()

{

int i,w1,w2,w3,sql;

for(i=10;i<32;i++)

{

sql=i*i;

w1=sql/100;

w2=sql%100/10;

w3=sql%100%10;

if(w1==w2||w1==w3||w2==w3)

printf("%d*%d=%d\n",i,i,sql);

}

}

15、#include

void main()

{

int A,B,C;

for(A=1;A<=3;A++)

for(B=1;B<=3;B++)

{

if(B!=A)

C=6-A-B;

if(C!=A&&C!=B)

if(A!=1&&C!=1&&C!=3)

printf("A<->%d\nB<->%d\nC<->%d\n",A,B,C);

}

printf("1->X 2->Y 3->Z\n");

}

16、#include

void main()

{

int number;

printf("请输入一个整数\nnumber=");

scanf("%d",&number);

if(number%4==0)

printf("%d能被4整除\n",number);

if(number%7==0)

printf("%d能被7整除\n",number);

if(number%9==0)

printf("%d能被9整除\n",number);

else

printf("不能被4,7,9任一个整除\n");

}

17、#include

void main()

{

int a,b,c,d;

printf("Please think of a number between 1 and 100\n");

printf("your number divided by 3 has a remainder of\n");

printf("Please Input a=");

scanf("%d",&a);

printf("your number divided by 4 has a remainder of\n");

printf("Please Input b=");

scanf("%d",&b);

printf("your number divided by 7 has a remainder of\n");

printf("Please Input c=");

scanf("%d",&c);

printf("let me think a moment ...\n");

d=28*a+21*b+36*c;

while (d>84)

d=d-84;

printf("你的数字是%d\n",d);

}

18、#include

void main()

{

int a,b,c,d,e,f,g,h,i,sum1,sum2;

for(a=1;a<=9;a++)

for(b=1;b<=9;b++)

if(a!=b)

for(c=1;c<=9;c++)

if(c!=a&&c!=b)

for(d=1;d<=9;d++)

if(d!=a&&d!=b&&d!=c)

for(e=1;e<=9;e++)

if(e!=a&&e!=b&&e!=c&&e!=d)

for(f=1;f<=9;f++)

if(f!=a&&f!=b&&f!=c&&f!=d&&f!=e)

for(g=1;g<=9;g++)

if(g!=a&&g!=b&&g!=c&&g!=d&&g!=e&&g!=f)

for(h=1;h<=9;h++) if(h!=a&&h!=b&&h!=c&&h!=d&&h!=e&&h!=f&&h!=g)

for(i=1;i<=9;i++)

if(i!=a&&i!=b&&i!=c&&i!=d&&i!=e&&i!=f&&i!=g&&i!=h)

{ sum1=a*10000+b*1000+c*100+d*10+e;

sum2=f*1000+g*100+h*10+i;

if(sum1==2*sum2)

printf("五位数为:%d 四位数为:%d \n",sum1,sum2);

}

}

19、#include

#include

void main()

{

char str[100];

int sum=0,i,n=0;

printf("请输入十六进制数:");

gets(str);

n=strlen(str);

for(i=0;i

{

if(str[i]=='A'|str[i]=='B'|

str[i]=='C'|str[i]=='D'|

str[i]=='E'|str[i]=='F')

str[i]=str[i]-55;

if(str[i]=='a'|str[i]=='b'|

str[i]=='c'|str[i]=='d'|

str[i]=='e'|str[i]=='f')

str[i]=str[i]-87;

if(str[i]=='1'|str[i]=='2'|

str[i]=='3'|str[i]=='4'|

str[i]=='5'|str[i]=='6'|

str[i]=='7'|str[i]=='8'|

str[i]=='9'|str[i]=='0')

str[i]=str[i]-48;

}

for(i=0;i

sum=(sum+str[i])*16;

sum=sum+str[i];

printf("十进制数为:%d\n",sum);

}

20、#include

void main()

{

int a,b,c,d,e,f,g,h,i;

for(a=1;a<=9;a++)

for(b=1;b<=9;b++)

if(a!=b)

for(c=1;c<=9;c++)

if(c!=a&&c!=b)

for(d=1;d<=9;d++)

if(d!=a&&d!=b&&d!=c)

for(e=1;e<=9;e++)

if(e!=a&&e!=b&&e!=c&&e!=d)

for(f=1;f<=9;f++)

if(f!=a&&f!=b&&f!=c&&f!=d&&f!=e)

for(g=1;g<=9;g++)

if(g!=a&&g!=b&&g!=c&&g!=d&&g!=e&&g!=f)

for(h=1;h<=9;h++) if(h!=a&&h!=b&&h!=c&&h!=d&&h!=e&&h!=f&&h!=g)

for(i=1;i<=9;i++)

if(i!=a&&i!=b&&i!=c&&i!=d&&i!=e&&i!=f&&i!=g&&i!=h)

{ if((a*10+b)*(c*100+d*10+e)==(f*1000+g*100+h*10+i))

printf("a=%d b=%d c=%d d=%d e=%d f=%d g=%d h=%d i=%d\n",a,b,c,d,e,f,g,h,i);

}

}

21、#include

#include

void main()

{

int a,b,c,d,e,f,g,h,i;

for(a=1;a<=9;a++)

for(b=1;b<=9;b++)

if(a!=b)

for(c=1;c<=9;c++)

if(c!=a&&c!=b)

for(d=1;d<=9;d++)

if(d!=a&&d!=b&&d!=c)

for(e=1;e<=9;e++)

if(e!=a&&e!=b&&e!=c&&e!=d)

for(f=1;f<=9;f++)

if(f!=a&&f!=b&&f!=c&&f!=d&&f!=e)

for(g=1;g<=9;g++)

if(g!=a&&g!=b&&g!=c&&g!=d&&g!=e&&g!=f)

for(h=1;h<=9;h++) if(h!=a&&h!=b&&h!=c&&h!=d&&h!=e&&h!=f&&h!=g)

for(i=1;i<=9;i++)

if(i!=a&&i!=b&&i!=c&&i!=d&&i!=e&&i!=f&&i!=g&&i!=h)

if(sqrt(a*100000+b*10000+c*1000+d*100+e*10+f)==(g*100+h*10+i))

printf("%d\n",a*100000+b*10000+c*1000+d*100+e*10+f);

}

23、#include

void main()

{

int number,w1,w2,w3,w4,w5;

printf("请输入一个五位以内的正整数:");

scanf("%d",&number);

if(number/10==0)

{

printf("它是一个一位数!\n");

printf("%d\n",number);

printf("正序逆序相同!\n");

}

else

if(number/100==0)

{

printf("它是一个两位数!\n");

printf("正序为:%d %d\n",number/10,number%10);

printf("逆序为:%d %d\n",number%10,number/10);

}

else

if(number/1000==0)

{

printf("它是一个三位数!\n");

w1=number/100;

w2=number%100/10;

w3=number%10;

printf("正序为:%d %d %d\n",w1,w2,w3);

printf("逆序为:%d %d %d\n",w3,w2,w1);

}

else

if(number/10000==0)

{

printf("它是一个四位数!\n");

w1=number/1000;

w2=number%1000/100;

w3=number%100/10;

w4=number%100%10;

printf("正序为:%d %d %d %d\n",w1,w2,w3,w4);

printf("逆序为:%d %d %d %d\n",w4,w3,w2,w1);

}

else

if(number/100000==0)

{

printf("它是一个五位数!\n");

w1=number/10000;

w2=number%10000/1000;

w3=number%1000/100;

w4=number%1000%100/10;

w5=number%1000%100%10;

printf("正序为:%d %d %d %d %d\n",w1,w2,w3,w4,w5);

printf("逆序为:%d %d %d %d %d\n",w5,w4,w3,w2,w1);

}

else

printf("error!");

}

27、#include

void main()

{

int month;

printf("请输入月份month=");

scanf("%d",&month);

switch(month)

{

case 1:printf("January\n");break;

case 2:printf("February\n");break;

case 3:printf("March\n");break;

case 4:printf("April\n");break;

case 5:printf("May\n");break;

case 6:printf("June\n");break;

case 7:printf("July\n");break;

case 8:printf("August\n");break;

case 9:printf("September\n");break;

case 10:printf("October\n");break;

case 11:printf("November\n");break;

case 12:printf("December\n");break;

}

}

《计算机算法设计与分析》习题及答案

《计算机算法设计与分析》习题及答案 一.选择题 1、二分搜索算法是利用( A )实现的算法。 A、分治策略 B、动态规划法 C、贪心法 D、回溯法 2、下列不是动态规划算法基本步骤的是( A )。 A、找出最优解的性质 B、构造最优解 C、算出最优解 D、定义最优解 3、最大效益优先是(A )的一搜索方式。 A、分支界限法 B、动态规划法 C、贪心法 D、回溯法 4. 回溯法解旅行售货员问题时的解空间树是( A )。 A、子集树 B、排列树 C、深度优先生成树 D、广度优先生成树 5.下列算法中通常以自底向上的方式求解最优解的是(B )。 A、备忘录法 B、动态规划法 C、贪心法 D、回溯法 6、衡量一个算法好坏的标准是( C )。 A 运行速度快 B 占用空间少 C 时间复杂度低 D 代码短 7、以下不可以使用分治法求解的是( D )。 A 棋盘覆盖问题 B 选择问题 C 归并排序 D 0/1背包问题 8. 实现循环赛日程表利用的算法是(A )。 A、分治策略 B、动态规划法 C、贪心法 D、回溯法 9.下面不是分支界限法搜索方式的是(D )。 A、广度优先 B、最小耗费优先 C、最大效益优先 D、深度优先 10.下列算法中通常以深度优先方式系统搜索问题解的是(D )。 A、备忘录法 B、动态规划法 C、贪心法 D、回溯法

11.备忘录方法是那种算法的变形。( B ) A、分治法 B、动态规划法 C、贪心法 D、回溯法 12.哈夫曼编码的贪心算法所需的计算时间为(B )。 A、O(n2n) B、O(nlogn) C、O(2n) D、O(n) 13.分支限界法解最大团问题时,活结点表的组织形式是(B )。 A、最小堆 B、最大堆 C、栈 D、数组 14.最长公共子序列算法利用的算法是(B)。 A、分支界限法 B、动态规划法 C、贪心法 D、回溯法 15.实现棋盘覆盖算法利用的算法是(A )。 A、分治法 B、动态规划法 C、贪心法 D、回溯法 16.下面是贪心算法的基本要素的是(C )。 A、重叠子问题 B、构造最优解 C、贪心选择性质 D、定义最优解 17.回溯法的效率不依赖于下列哪些因素( D ) A.满足显约束的值的个数 B. 计算约束函数的时间 C.计算限界函数的时间 D. 确定解空间的时间 18.下面哪种函数是回溯法中为避免无效搜索采取的策略(B ) A.递归函数 B.剪枝函数 C。随机数函数 D.搜索函数 19. (D)是贪心算法与动态规划算法的共同点。 A、重叠子问题 B、构造最优解 C、贪心选择性质 D、最优子结构性质 20. 矩阵连乘问题的算法可由( B )设计实现。 A、分支界限算法 B、动态规划算法 C、贪心算法 D、回溯算法 21. 分支限界法解旅行售货员问题时,活结点表的组织形式是( A )。

算法设计与分析考试题及答案

算法设计与分析考试题 及答案 Company number:【WTUT-WT88Y-W8BBGB-BWYTT-19998】

一、填空题(20分) 1.一个算法就是一个有穷规则的集合,其中之规则规定了解决某一特殊类型问题的一系列运算,此外,算法还应具有以下五个重要特性:确定性 有穷性 可行性 0个或多个输入 一个或多个输出 2.算法的复杂性有时间复杂性 空间复杂性之分,衡量一个算法好坏的标准是 时间复杂度高低 3.某一问题可用动态规划算法求解的显着特征是 该问题具有最优子结构性质 4.若序列X={B,C,A,D,B,C,D},Y={A,C,B,A,B,D,C,D},请给出序列X 和Y 的一个最长公共子序列{BABCD}或{CABCD}或{CADCD } 5.用回溯法解问题时,应明确定义问题的解空间,问题的解空间至少应包含一个(最优)解 6.动态规划算法的基本思想是将待求解问题分解成若干_子问题 ,先求解_子问题 ,然后从这些子问题 的解得到原问题的解。 7.以深度优先方式系统搜索问题解的算法称为回溯法 背包问题的回溯算法所需的计算时间为o(n*2n ) ,用动态规划算法所需的计算时间为o(min{nc,2n }) 9.动态规划算法的两个基本要素是最优子结构 _和重叠子问题 10.二分搜索算法是利用动态规划法实现的算法。 二、综合题(50分) 1.写出设计动态规划算法的主要步骤。 ①问题具有最优子结构性质;②构造最优值的递归关系表达式; ③最优值的算法描述;④构造最优解; 2. 流水作业调度问题的johnson 算法的思想。 ①令N 1={i|a i =b i };②将N 1中作业按a i 的非减序排序得到N 1’,将N 2中作业按b i 的非增序排序得到N 2’;③N 1’中作业接N 2’中作业就构成了满足Johnson 法则的最优调度。 3. 若n=4,在机器M1和M2上加工作业i 所需的时间分别为a i 和b i ,且 (a 1,a 2,a 3,a 4)=(4,5,12,10),(b 1,b 2,b 3,b 4)=(8,2,15,9)求4个作业的最优调度方案,并计算最优值。 步骤为:N1={1,3},N2={2,4}; N 1’={1,3}, N 2’={4,2}; 最优值为:38 4. 使用回溯法解0/1背包问题:n=3,C=9,V={6,10,3},W={3,4,4},其解空间有长度为3的0-1向量组成,要求用一棵完全二叉树表示其解空间(从根出发,左1右0),并画出其解空间树,计算其最优值及最优解。 解空间为{(0,0,0),(0,1,0),(0,0,1),(1,0,0),(0,1,1),(1,0,1), (1,1,0),(1,1,1)}。 解空间树为: 该问题的最优值为:16 最优解为:(1,1,0) 5. 设S={X 1,X 2,···,X n }是严格递增的有序集,利用二叉树的结点来存储S 中的元素,在表示S 的二叉搜索树中搜索一个元素X ,返回的结果有两种情形,(1)在二叉搜索树的内结点中找到X=X i ,其概率为b i 。(2)在二叉搜索树的叶结点中确定X ∈(X i ,X i+1),其概率为a i 。在表示S 的二叉搜索树T 中,设存储元素X i 的结点深度为C i ;叶结点(X i ,X i+1)的结点深度为d i ,则二叉搜索树T 的平均路长p 为多少假设二叉搜索树T[i][j]={X i ,X i+1,···,X j }最优值为m[i][j],W[i][j]= a i-1+b i +···+b j +a j ,则m[i][j](1<=i<=j<=n)递归关系表达式为什么 .二叉树T 的平均路长P=∑=+n i 1 Ci)(1*bi +∑=n j 0 dj *aj

算法设计与分析 吕国英 习题答案第四章

算法设计与分析(第二版)主编:吕国英 习题答案 第四章 1. #include int main(void) { int buf[100]; int n; int i,j,k; scanf("%d",&n); for(i=0;i=10) { buf[j+1]+=buf[j]/10; buf[j]=buf[j]%10; } } for(i=n-1;i>=0;i--) printf("%d",buf[i]); printf("\n"); return 0; } 2. #include int main(void) { int n=2; int i;

for(i=1;i<=9;i++) { n=(n+2)*2; } printf("%d\n",n); return 0; } 3. #include int main(void) { int a=54; int n; int m; printf("计算机先拿3张牌\n"); a=a-3; while(a>=0) { printf("还剩%d张牌\n",a); printf("你拿几张?请输入:"); scanf("%d",&n); if(n>4||n<1||n>a) { printf("错误!重新拿牌\n"); continue; } a=a-n; printf("还剩%d张牌\n",a); if(a==0) break; m=5-n; printf("计算机拿%d\n",m); a=a-m; } return 0; } 4. #include int d; int a1,a2; int fun(int n); int main(void) { int n;

算法设计与分析试卷A及答案

考试课程: 班级: 姓名: 学号: ------------------------------------------------- 密 ---------------------------------- 封 ----------------------------- 线 ---------------------------------------------------------

考试课程: 班级: 姓名: 学号: ------------------------------------------------- 密 ---------------------------------- 封 ----------------------------- 线 ---------------------------------------------------------

参考答案 一、填空 1、空间复杂度 时间复杂度 2、回溯法 3、递归算法 4、渐进确界或紧致界 5、原问题的较小模式 递归技术 6、问题的计算复杂性分析有一个共同的客观尺度 7、②③④① 8、问题的最优解包含其子问题的最优解 9、局部最优 10、正确的 三、简答题 1、高级语言更接近算法语言,易学、易掌握,一般工程技术人员只需要几周时间的培训就可以胜任程序员的工作; 高级语言为程序员提供了结构化程序设计的环境和工具,使得设计出来的程序可读性好,可维护性强,可靠性高; 高级语言不依赖于机器语言,与具体的计算机硬件关系不大,因而所写出来的程序可植性好、重用率高; 把繁杂琐碎的事务交给编译程序,所以自动化程度高,开发周期短,程序员可以集中时间和精力从事更重要的创造性劳动,提高程序质量。 2、 ①不能保证最后求得的解是最佳的;即多半是近似解。(少数问题除外) ②策略容易发现(关键:提取清楚问题中的维度), 而且运用简单,被广泛运用。 ③策略多样,结果也多样。 ④算法实现过程中,通常用到辅助算法:排序 3、解:① 因为:;01 -10n n )1-10n n (lim 22 2=+-+→∞n n 由渐近表达式的定义易知: 1-10n n 2 2+是n ;的渐近表达式。 ② 因为:;0n 1/ 5/n 1414)n 1/ 5/n 14(lim 22=++-++∞→n 由渐近表达式的定义易知: 14是14+5/n+1/ n 2的渐近表达式。 4、 找出最优解的性质,并刻划其结构特征。 递归地定义最优值。 以自底向上的方式计算出最优值。 根据计算最优值时得到的信息,构造最优解。 四、算法设计题 1、按照单位效益从大到小依次排列这7个物品为:FBGDECA 。将它们的序号分别记为1~7。则可生产如下的状态空间搜索树。其中各个节点处的限界函数值通过如下方式求得:【排序1分】 5x =6x =7x =

算法设计与分析课后部分习题答案

算法实现题3-7 数字三角形问题 问题描述: 给定一个由n行数字组成的数字三角形,如图所示。试设计一个算法,计算出从三角形的顶至底的一条路径,使该路径经过的数字总和最大。编程任务: 对于给定的由n行数字组成的数字三角形,编程计算从三角形的顶至底的路径经过的数字和的最大值。数据输入: 有文件input.txt提供输入数据。文件的第1行是数字三角形的行数n,1<=n<=100。接下来的n行是数字三角形各行的数字。所有数字在0-99之间。结果输出: 程序运行结束时,将计算结果输出到文件output.txt中。文件第1行中的数是计算出的最大值。 输入文件示例输出文件示 例 input.txt output.txt 5 30 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 源程序: #include "stdio.h" voidmain() { intn,triangle[100][100],i,j;//triangle数组用来存储金字塔数值,n表示行数 FILE *in,*out;//定义in,out两个文件指针变量 in=fopen("input.txt","r"); fscanf(in,"%d",&n);//将行数n读入到变量n中

for(i=0;i=0;row--)//从上往下递归计算 for(int col=0;col<=row;col++) if(triangle[row+1][col]>triangle[row+1][col+1]) triangle[row][col]+=triangle[row+1][col]; else triangle[row][col]+=triangle[row+1][col+1]; out=fopen("output.txt","w"); fprintf(out,"%d",triangle[0][0]);//将最终结果输出到output.txt中 } 算法实现题4-9 汽车加油问题 问题描述: 一辆汽车加满油后可行驶nkm。旅途中有若干加油站。设计一个有效算法,指出应在哪些加油站停靠加油,使沿途加油次数最少。并证明算法能产出一个最优解。编程任务: 对于给定的n和k个加油站位置,编程计算最少加油次数。数据输入: 由文件input.txt给出输入数据。第1行有2个正整数n和k ,表示汽车加满油后可行驶nkm,且旅途中有k个加油站。接下来的1行中,有k+1个整数,表示第k个加油站与第k-1个加油站之间的距离。第

算法设计与分析考试题及答案

1.一个算法就是一个有穷规则的集合,其中之规则规定了解决某一特殊类型问题的一系列运算,此外,算法还应具有以下五个重要特性:_________,________,________,__________,__________。 2.算法的复杂性有_____________和___________之分,衡量一个算法 好坏的标准是______________________。 3.某一问题可用动态规划算法求解的显著特征是 ____________________________________。 4.若序列X={B,C,A,D,B,C,D},Y={A,C,B,A,B,D,C,D},请给出序列X 和Y的一个最长公共子序列_____________________________。 5.用回溯法解问题时,应明确定义问题的解空间,问题的解空间至少应包含___________。 6.动态规划算法的基本思想是将待求解问题分解成若干____________,先求解___________,然后从这些____________的解得到原问题的解。 7.以深度优先方式系统搜索问题解的算法称为_____________。 8.0-1背包问题的回溯算法所需的计算时间为_____________,用动态规划算法所需的计算时间为____________。 9.动态规划算法的两个基本要素是___________和___________。 10.二分搜索算法是利用_______________实现的算法。 二、综合题(50分) 1.写出设计动态规划算法的主要步骤。 2.流水作业调度问题的johnson算法的思想。

算法设计与分析试卷及答案

湖南科技学院二○ 年 学期期末考试 信息与计算科学专业 年级《算法设计与分析》 试题 考试类型:开卷 试卷类型:C 卷 考试时量:120 分钟 1. 用O 、Ω和θ表示函数f 与g 之间的关系______________________________。 ()()log log f n n n g n n == 2. 算法的时间复杂性为1, 1()8(3/7), 2 n f n f n n n =?=? +≥?,则算法的时间复杂性的阶 为__________________________。 3. 快速排序算法的性能取决于______________________________。 4. 算法是_______________________________________________________。 5. 在对问题的解空间树进行搜索的方法中,一个活结点最多有一次机会成为活结点的是_________________________。 6. 在算法的三种情况下的复杂性中,可操作性最好且最有实际价值的是_____情况下的时间复杂性。 7. 大Ω符号用来描述增长率的下限,这个下限的阶越___________,结果就越有价值。。 8. ____________________________是问题能用动态规划算法求解的前提。 9. 贪心选择性质是指________________________________________________________ ____________________________________________________________。 题 号 一 二 三 四 五 总分 统分人 得 分 阅卷人

算法设计与分析试卷(2010)

内部资料,转载请注明出处,谢谢合作。 算法设计与分析试卷(A 卷) 一、 选择题 ( 选择1-4个正确的答案, 每题2分,共20分) (1)计算机算法的正确描述是: A .一个算法是求特定问题的运算序列。 B .算法是一个有穷规则的集合,其中之规则规定了一个解决某一特定类型的问题的运算序列。 C .算法是一个对任一有效输入能够停机的图灵机。 D .一个算法,它是满足5 个特性的程序,这5个特性是:有限性、确定性、能 行性、有0个或多个输入且有1个或多个输出。 (2)影响程序执行时间的因素有哪些? A .算法设计的策略 B .问题的规模 C .编译程序产生的机器代码质量 D .计算机执行指令的速度 (3)用数量级形式表示的算法执行时间称为算法的 A .时间复杂度 B .空间复杂度 C .处理器复杂度 D .通信复杂度 (4)时间复杂性为多项式界的算法有: A .快速排序算法 B .n-后问题 C .计算π值 D .prim 算法 (5)对于并行算法与串行算法的关系,正确的理解是: A .高效的串行算法不一定是能导出高效的并行算法 B .高效的串行算法不一定隐含并行性 C .串行算法经适当的改造有些可以变化成并行算法 D. 用串行方法设计和实现的并行算法未必有效 (6)衡量近似算法性能的重要标准有: A .算法复杂度 B .问题复杂度 C .解的最优近似度 D .算法的策略 (7)分治法的适用条件是,所解决的问题一般具有这些特征: A .该问题的规模缩小到一定的程度就可以容易地解决; B .该问题可以分解为若干个规模较小的相同问题; C .利用该问题分解出的子问题的解可以合并为该问题的解 D .该问题所分解出的各个子问题是相互独立的。 (8)具有最优子结构的算法有: A .概率算法 B .回溯法 C .分支限界法 D .动态规划法 (9)下列哪些问题是典型的NP 完全问题: A .排序问题 B .n-后问题 C .m-着色问题 D .旅行商问题 (10)适于递归实现的算法有: A .并行算法 B .近似算法 C .分治法 D .回溯法 二、算法分析题(每小题5分,共10分) (11)用展开法求解递推关系: (12)分析当输入数据已经有序时快速排序算法的不足,提出算法的改进方案。 ???>+-==1 1)1(211)(n n T n n T

算法设计与分析试卷及答案

湖南科技学院二○年学期期末考试 信息与计算科学专业年级《算法设计与分析》试题 考试类型:开卷试卷类型:C卷考试时量:120分钟 题号一二三四五总分统分人 得分 阅卷人 复查人 一、填空题(每小题3 分,共计30 分) 1、用O、Ω与θ表示函数f与g之间得关系______________________________。 2、算法得时间复杂性为,则算法得时间复杂性得阶为__________________________。 3、快速排序算法得性能取决于______________________________。 4、算法就是_______________________________________________________。 5、在对问题得解空间树进行搜索得方法中,一个活结点最多有一次机会成为活结点得就是_________________________。 6、在算法得三种情况下得复杂性中,可操作性最好且最有实际价值得就是_____情况下得时间复杂性。 7、大Ω符号用来描述增长率得下限,这个下限得阶越___________,结果就越有价值。。 8、____________________________就是问题能用动态规划算法求解得前提。 9、贪心选择性质就是指____________________________________________________________________________________________________________________。 10、回溯法在问题得解空间树中,按______________策略,从根结点出发搜索解空间树。 二、简答题(每小题10分,共计30分) 1、试述回溯法得基本思想及用回溯法解题得步骤。 2、有8个作业{1,2,…,8}要在由2台机器M1与M2组成得流水线上完成加工。每个作业加工得顺序都就是先在M1上加工,然后在M2上加工。M1与M2加工作业i所需得时间分别为: M110 2 8 12 6 9414

算法设计与分析第2版 王红梅 胡明 习题答案

精品文档习题胡明-版)-王红梅-算法设计与分析(第2答案 1 习题)—1783Leonhard Euler,17071.图论诞生于七桥问题。出生于瑞士的伟大数学家欧拉(提 出并解决了该问题。七桥问题是这样描述的:北区一个人是否能在一次步行中穿越哥尼斯堡(现东区在叫加里宁格勒,在波罗的海南岸)城中全部岛区的七座桥后回到起点,且每座桥只经过一次,南区是这条河以及河上的两个岛和七座桥的图1.7 1.7 七桥问题图草图。请将该问题的数据模型抽象出来,并判断此问题是否有解。 七桥问题属于一笔画问题。 输入:一个起点 输出:相同的点一次步行1,经过七座桥,且每次只经历过一次2,回到起点3,该问题无解:能一笔画的图形只有两类:一类是所有的点都是偶点。另一类是只有二个奇点的图形。)用的不是除法而是减最初的欧几里德算法2.在欧几里德提出的欧几里德算法中(即法。请用伪代码描述这个版本的欧几里德算法 1.r=m-n r=0 循环直到2.m=n 2.1 n=r 2.2 r=m-n 2.3 m 输出3 .设计算法求数组中相差最小的两个元素(称为最接近数)的差。要求分别给出伪代3++描述。C码和 采用分治法// //对数组先进行快速排序在依次比较相邻的差//精品文档. 精品文档 #include using namespace std; int partions(int b[],int low,int high) { int prvotkey=b[low]; b[0]=b[low]; while (low=prvotkey)

算法设计与分析习题答案

算法设计与分析习题答案(第二版) 主编:吕国英 习题答案 习题答案 第三章: 1. #include #include int main(int argc,char **argv) { int n; int i,j,k; int *buf; printf("请输入n的数值:"); scanf("%d",&n); buf=(int *)malloc(n*sizeof(int)); for(i=0;i=0;i--)

for(j=i;j>=0;j--) { buf[j]+=2; } } for(k=0;k<=n-2;k++) { if(buf[k]>=10) { buf[k+1]+=buf[k]/10; buf[k]%=10; } } for(i=n-1;i>=0;i--) printf("%d",buf[i]); printf("\n"); return 0; } 2. #include int main(int argc,char **argv)

int buf[6][6]; int i,j; printf("任意输入6个数字:"); for(i=0;i<6;i++) scanf("%d",&buf[0][i]); for(i=0;i<5;i++) { for(j=0;j<5;j++) { buf[i+1][j+1]=buf[i][j]; } buf[i+1][0]=buf[i][j]; } for(i=0;i<6;i++) { for(j=0;j<6;j++) printf("%d ",buf[i][j]); printf("\n"); } return 0; }

算法设计与分析试卷(2010)

算法设计与分析试卷(A 卷) 一、 选择题 ( 选择1-4个正确的答案, 每题2分,共20分) (1)计算机算法的正确描述是: B 、D A .一个算法是求特定问题的运算序列。 B .算法是一个有穷规则的集合,其中之规则规定了一个解决某一特定类型的问题的运算序列。 C .算法是一个对任一有效输入能够停机的图灵机。 D .一个算法,它是满足5 个特性的程序,这5个特性是:有限性、确定性、能 行性、有0个或多个输入且有1个或多个输出。 (2)影响程序执行时间的因素有哪些? C 、D A .算法设计的策略 B .问题的规模 C .编译程序产生的机器代码质量 D .计算机执行指令的速度 (3)用数量级形式表示的算法执行时间称为算法的 A A .时间复杂度 B .空间复杂度 C .处理器复杂度 D .通信复杂度 (4)时间复杂性为多项式界的算法有: A .快速排序算法 B .n-后问题 C .计算π值 D .prim 算法 (5)对于并行算法与串行算法的关系,正确的理解是: A .高效的串行算法不一定是能导出高效的并行算法 B .高效的串行算法不一定隐含并行性 C .串行算法经适当的改造有些可以变化成并行算法 D. 用串行方法设计和实现的并行算法未必有效 (6)衡量近似算法性能的重要标准有: A A .算法复杂度 B .问题复杂度 C .解的最优近似度 D .算法的策略 (7)分治法的适用条件是,所解决的问题一般具有这些特征: ABCD A .该问题的规模缩小到一定的程度就可以容易地解决; B .该问题可以分解为若干个规模较小的相同问题; C .利用该问题分解出的子问题的解可以合并为该问题的解 D .该问题所分解出的各个子问题是相互独立的。 (8)具有最优子结构的算法有: A .概率算法 B .回溯法 C .分支限界法 D .动态规划法 (9)下列哪些问题是典型的NP 完全问题: A .排序问题 B .n-后问题 C .m-着色问题 D .旅行商问题 (10)适于递归实现的算法有: C A .并行算法 B .近似算法 C .分治法 D .回溯法 二、算法分析题(每小题5分,共10分) (11)用展开法求解递推关系: (12)分析当输入数据已经有序时快速排序算法的不足,提出算法的改进方案。 ???>+-==1 1)1(211)(n n T n n T

计算机算法设计与分析期末考试复习题

1、二分搜索算法是利用( A )实现的算法。 A、分治策略 B、动态规划法 C、贪心法 D、回溯法 2、下列不是动态规划算法基本步骤的是( A )。 A、找出最优解的性质 B、构造最优解 C、算出最优解 D、定义最优解 3、最大效益优先是( A )的一搜索方式。 A、分支界限法 B、动态规划法 C、贪心法 D、回溯法 4、最长公共子序列算法利用的算法是( B )。 A、分支界限法 B、动态规划法 C、贪心法 D、回溯法 5. 回溯法解TSP问题时的解空间树是( A )。 A、子集树 B、排列树 C、深度优先生成树 D、广度优先生成树6.下列算法中通常以自底向上的方式求解最优解的是( B )。 A、备忘录法 B、动态规划法 C、贪心法 D、回溯法 7、衡量一个算法好坏的标准是(C )。 A 运行速度快 B 占用空间少 C 时间复杂度低 D 代码短 8、以下不可以使用分治法求解的是(D )。 A 棋盘覆盖问题 B 选择问题 C 归并排序 D 0/1背包问题 9. 实现循环赛日程表利用的算法是( A )。 A、分治策略 B、动态规划法 C、贪心法 D、回溯法 10、实现最长公共子序列利用的算法是( B )。 A、分治策略 B、动态规划法 C、贪心法 D、回溯法11.下面不是分支界限法搜索方式的是( D )。 A、广度优先 B、最小耗费优先 C、最大效益优先 D、深度优先 12.下列算法中通常以深度优先方式系统搜索问题解的是( D )。 A、备忘录法 B、动态规划法 C、贪心法 D、回溯法 13. 一个问题可用动态规划算法或贪心算法求解的关键特征是问题的( B )。 A、重叠子问题 B、最优子结构性质 C、贪心选择性质 D、定义最优解14.广度优先是( A )的一搜索方式。 A、分支界限法 B、动态规划法 C、贪心法 D、回溯法 15.背包问题的贪心算法所需的计算时间为( B )。

算法设计与分析第三章课后答案吕国英主编.

2、#include void main() { int a[6][6],b[6],i,j; printf("请输入6个整数:"); for(i=0;i<6;i++) { scanf("%d",&b[i]); } for(i=0;i<6;i++) { a[0][i]=b[i]; } for(i=1;i<=5;i++) a[i][0]=b[6-i]; for(i=1;i<=5;i++) for(j=1;j<=5;j++) { a[i][j]=a[i-1][j-1]; } for(i=0;i<=5;i++) { for(j=0;j<=5;j++) printf("%d ",a[i][j]); printf("\n"); } } 3、#include void main() { int i,j,count,n; int a[100][100]; printf("请输入矩阵的阶n="); scanf("%d",&n); count=1; for(i=1;i<=n/2;i++) { for(j=i;j<=n-i+1;j++)//上侧 { a[i][j]=count; count++; } for(j=i+1;j<=n-i;j++)//右侧 {

a[j][n-i+1]=count; count++; } for(j=n-i+1;j>=i+1;j--)//下侧 { a[n-i+1][j]=count; count++; } for(j=n-i+1;j>=i+1;j--)//左侧 { a[j][i]=count; count++; } } if(n%2==1) { i=(n+1)/2; a[i][i]=n*n; } for(i=1;i<=n;i++) { for(j=1;j<=n;j++) printf("%2d ",a[i][j]); printf("\n"); } } 4、#include void main() { int i,j,n,a[100][100],count=1; printf("请输入方阵的阶n:"); scanf("%d",&n); for(i=1;i<=n;i++) for(j=1;j<=i;j++) { a[i-j+1][j]=count; count++; } for(i=1;i<=n;i++) { for(j=1;j<=n-i+1;j++) printf("%4d",a[i][j]); printf("\n");

算法设计与分析习题解答

第一章作业 1.证明下列Ο、Ω和Θ的性质 1)f=Ο(g)当且仅当g=Ω(f) 证明:充分性。若f=Ο(g),则必然存在常数c1>0和n0,使得?n≥n0,有f≤c1*g(n)。由于c1≠0,故g(n) ≥ 1/ c1 *f(n),故g=Ω(f)。 必要性。同理,若g=Ω(f),则必然存在c2>0和n0,使得?n≥n0,有g(n) ≥ c2 *f(n).由于c2≠0,故f(n) ≤ 1/ c2*f(n),故f=Ο(g)。 2)若f=Θ(g)则g=Θ(f) 证明:若f=Θ(g),则必然存在常数c1>0,c2>0和n0,使得?n≥n0,有c1*g(n) ≤f(n) ≤ c2*g(n)。由于c1≠0,c2≠0,f(n) ≥c1*g(n)可得g(n) ≤ 1/c1*f(n),同时,f(n) ≤c2*g(n),有g(n) ≥ 1/c2*f(n),即1/c2*f(n) ≤g(n) ≤ 1/c1*f(n),故g=Θ(f)。 3)Ο(f+g)= Ο(max(f,g)),对于Ω和Θ同样成立。 证明:设F(n)= Ο(f+g),则存在c1>0,和n1,使得?n≥n1,有 F(n) ≤ c1 (f(n)+g(n)) = c1 f(n) + c1g(n) ≤ c1*max{f,g}+ c1*max{f,g} =2 c1*max{f,g} 所以,F(n)=Ο(max(f,g)),即Ο(f+g)= Ο(max(f,g)) 对于Ω和Θ同理证明可以成立。 4)log(n!)= Θ(nlogn)

证明: ?由于log(n!)=∑=n i i 1 log ≤∑=n i n 1 log =nlogn ,所以可得log(n!)= Ο(nlogn)。 ?由于对所有的偶数n 有, log(n!)= ∑=n i i 1 log ≥∑=n n i i 2 /log ≥∑=n n i n 2 /2/log ≥(n/2)log(n/2)=(nlogn)/2-n/2。 当n ≥4,(nlogn)/2-n/2≥(nlogn)/4,故可得?n ≥4,log(n!) ≥(nlogn)/4,即log(n!)= Ω(nlogn)。 综合以上两点可得log(n!)= Θ(nlogn) 2. 设计一个算法,求给定n 个元素的第二大元素,并给出算法在最坏情况下使用的比较次数。(复杂度至多为2n-3) 算法: V oid findsecond(ElemType A[]) { for (i=2; i<=n;i++) if (A[1]

算法设计与分析试题与答案

一、填空题(20分) 1.一个算法就是一个有穷规则的集合,其中之规则规定了解决某一特殊类型问题的一系列运算,此外,算法还应具有以下五个重要特性: 确定性,有穷性,可行性,0个或多个输入,一个或多个输出。 2.算法的复杂性有时间复杂性和空间复杂性之分,衡量一个算法好坏的标准是时间复杂度高低。 3.某一问题可用动态规划算法求解的显著特征是该问题具有最优子结构性质。 4.若序列X={B,C,A,D,B,C,D},Y={A,C,B,A,B,D,C,D},请给出序列X和Y的一个最长公共子序列{BABCD}或{CABCD}或{CADCD}。 5.用回溯法解问题时,应明确定义问题的解空间,问题的解空间至少应包含一个(最优)解。 6.动态规划算法的基本思想是将待求解问题分解成若干子问题,先求解子问题,然后从这些子问题的解得到原问题的解。 7.以深度优先方式系统搜索问题解的算法称为回溯法。 8.0-1背包问题的回溯算法所需的计算时间为o(n*2n) ,用动态规划算法所需的计算时间为o(min{nc,2n})。 9.动态规划算法的两个基本要素是最优子结构和重叠子问题。 10.二分搜索算法是利用动态规划法实现的算法。 二、综合题(50分) 1.写出设计动态规划算法的主要步骤。 ①问题具有最优子结构性质;

②构造最优值的递归关系表达式; ③最优值的算法描述; ④构造最优解; 2.流水作业调度问题的johnson算法的思想。 ②N1={i|ai=bi}; ②将N1中作业按ai的非减序排序得到N1’,将N2中作业按bi的非增序排序得到N2’; ③N1’中作业接N2’中作业就构成了满足Johnson法则的最优调度。 3.若n=4,在机器M1和M2上加工作业i所需的时间分别为ai和bi,且 (a1,a2,a3,a4)=(4,5,12,10),(b1,b2,b3,b4)=(8,2,15,9)求4个作业的最优调度方案,并计算最优值。 步骤为:N1={1,3},N2={2,4}; N1’={1,3}, N2’={4,2}; 最优值为:38 4.使用回溯法解0/1背包问题:n=3,C=9,V={6,10,3},W={3,4,4},其解空间有长度为3 的0-1向量组成,要求用一棵完全二叉树表示其解空间(从根出发,左1右0),并画出其解空间树,计算其最优值及最优解。 解空间为{(0,0,0),(0,1,0),(0,0,1),(1,0,0),(0,1,1),(1,0,1), (1,1,0),(1,1,1)}。 解空间树为:

习题答案第四章 算法设计与分析 吕国英

习题答案第四章算法设计与分析吕国英 main(void) { int buf[100]; int n; int i,j,k; scanf("%d",&n); for(i=0;i=10) { buf[j+1]+=buf[j]/10; buf[j]=buf[j]%10; } } for(i=n-1;i>=0;i--) printf("%d",buf[i]); printf("\n"); return 0; }2、 #includeint main(void){int n=2;int i;for(i=1;i<=9;i++){n=(n+2)*2;}printf("%d\n",n);return 0;}3、#includeint main(void){int a=54;int n;int m;printf("计算机先拿3张牌\n");a=a-3;while(a>=0){printf("还剩%d张牌\n",a);printf("你拿几张?请输入: ");scanf("%d",&n);if(n>4||n<1||n>a){printf("错误!重新拿牌\n");continue;}a=a-n;printf("还剩%d张牌 \n",a);if(a==0)break;m=5-n;printf("计算机拿%d\n",m);a=a-m;}return 0;}4、#includeint d;int a1,a2;int fun(int n);int main(void){int

算法设计与分析试卷及答案.doc

湖南科技学院二○ 年 学期期末考试 信息与计算科学专业 年级《算法设计与分析》 试题 考试类型:开卷 试卷类型: C 卷 考试时量: 120 分钟 题号 一 二 三 四 五 总分 统分人 得 分 阅卷人 一、填空题(每小题 3 分,共计 30 分) 1. 用 O 、Ω和θ表示函数 f 与 g 之间的关系 ______________________________ 。 f n n lo g n g n log n 1, n 1 2. 算法的时间复杂性为 f (n) n ,则算法的时间复杂性的阶 8 f (3n / 7) n, 2 为__________________________ 。 3. 快速排序算法的性能取决于 ______________________________ 。 4. 算法是 _______________________________________________________ 。 5. 在对问题的解空间树进行搜索的方法中,一个活结点最多有一次机会成为活结点的 是_________________________ 。 6. 在算法的三种情况下的复杂性中, 可操作性最好且最有实际价值的是 _____情况下的时间复杂性。 7. 大Ω符号用来描述增长率的下限,这个下限的阶越 ___________,结果就越有价值。 。 8. ____________________________ 是问题能用动态规划算法求解的前提。 9. 贪心选择性质是指 ________________________________________________________ ____________________________________________________________ 。

《算法设计与分析实用教程》习题参考解答

《算法设计与分析实用教程》参考解答 1-1 加减得1的数学游戏 西西很喜欢数字游戏,今天他看到两个数,就想能否通过简单的加减,使最终答案等于1。而他又比较厌烦计算,所以他还想知道最少经过多少次才能得到1。 例如,给出16,9:16-9+16-9+16-9-9-9+16-9-9=1,需要做10次加减法计算。 设计算法,输入两个不同的正整数,输出得到1的最少计算次数。(如果无法得到1,则输出-1)。 (1)若输入两个不同的正整数a,b均为偶数,显然不可能得到1。 设x*a与y*b之差为“1”或“-1”,则对于正整数a,b经n=x+y-1次加减可得到1。 为了求n的最小值,令n从1开始递增,x在1——n中取值,y=n+1-x: 检测d=x*a+y*b,若d=1或-1,则n=x+y-1为所求的最少次数。 (2)算法描述 // 两数若干次加减结果为1的数学游戏 #include void main() {long a,b,d,n,x,y; printf(" 请输入整数a,b: "); scanf("%ld,%ld",&a,&b); if(a%2==0 && b%2==0) { printf(" -1\n");return;} n=0; while(1) { n++; for(x=1;x<=n;x++) { y=n+1-x;d=x*a-y*b; if(d==1 || d==-1) // 满足加减结果为1 { printf(" n=%ld\n",n);return;} } } } 请输入整数a,b: 2012,19 961 请输入整数a,b: 101,2013 606

相关文档
最新文档