资源描述:
《算法设计题集(整理稿)》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、信息学奥赛,一条通向成功之门的幽径学校:姓名:班级:枚举搜索枚举指的是从可能的解的集合中一一枚举各元素,用题目给定的检验条件判断哪些是无用的,哪些是有用的,能使命题成立即为其解。一般思路:a、对命题建立正确的数学模型,b、根据命题确定数学模型中各变量的范围(即可能解的范围〉,c、利用循环语句、条件语句逐步求解或证明。1、枚举数字【题目】编程找出四位数abed中满足下述关系的数:(ab+cd)(ab+cd)=abcd【算法】搜索问题:1000—9999关键是边枚举边分离高位、低位,后判断var:I,m,n,k:integer;beginforI:=1000to9999dobeginm:=Id
2、iv100;n:=I-m*100;k:=(m+n)*(m+n);ifk:=Ithenwriteln(I);end;end.2、钞票换硬币【题目】把一元钞票换成-•分、二分、五分硬卬(每种至少一枚),有哪些种换法?【答案】461种【参考程序】vari,j,k,total:integer;begin{i:二分硬币最多99枚}{j:二分硬币最多49枚}{k:五分硬币最多19枚}total:=0;{总数设为0}fori:=1to99doforj:=lto49dofork:=lto19doifi*l+j*2+k*5=100thenbeginwriteln(i:3,j:3,k:3);inc(total
3、);{总数加1}end;writeln(total);readln;end.逻辑判断【逻辑判断】根据条件利用取值函数ord对条件进行取值,然后利用循环语句穷举。5、谁是小偷【题目】有A、B、C、D四名偷窃嫌疑犯,其中一人是小偷,审问中,A说:“我不是小偷”,B说:“C是小偷”,C说:“小偷肯定是D”,D说:“C在冤枉人”,有三人说真话,一人说假话,问到底谁是小偷?【参考程序】varthief:char;beginforthief:=,to’D’doiford(thief〈〉’A’)+ord(thief=,C*)+ord(thief:’D’)+ord(thief〈〉’D’)=3thenwri
4、teln(,TheThiefis:’,thief);end.6、质量评比【题目】5家工厂的产品在一次评比中分获1,2,3,4,5,在公布结果前,已知E厂产品肯定不是第二、三名,五厂代表猜测评比结果,B厂的代表说C)’的代表说D厂的代表说E厂的代表说A厂的代表说:E厂一定能获得第一名。我厂的产品可能获第二名。A厂的产品质量最次。C厂的产品不是最好的。D厂的产品会获得第一名。公布结果后,证明只有产品获第一名和第二名的两个厂的代表猜对了。求5个厂产品各获第儿名。【答案】ABCDE52134【参考程序】vara,b,c,d,e:byte;beginfora:=lto5doforb:=lto5dof
5、orc:=lto5doford:=lto5dobegine:=15-a-b-c-d;if(e<>2)and(e<>3)and(a*b*c*d*e=120)thenif(ord(e=l)+ord(b=2)+ord(a=5)十ord(cOl)+ord(d=l)=2)and(ord((e=l)and((a=l)or(a=2)))+ord((b=2)and((b=l)or(b=2)))+ord((a=5)and((c=l)or(c=2)))+ord((cOl)and((d=l)or(d=2)))十ord((d=l)and((e=l)or(e=2)))=2)thenwritelnCa:’,a,’b:
6、’,b,’c:’,c,’d:’,d,’e:’,e)end;end.7、谁获冠军【题目】甲乙丙丁戊五个人在运动会上分获百米、二百米、跳高、跳远和铅球冠军,有四个人猜测比赛结果:A说:乙获铅球冠年,丁获跳高冠军。B说:甲获百米冠军,戊获跳远冠军。C说:丙获跳远冠军,丁获二百米冠军。D说:乙获跳高冠军,戊获铅球冠军。其中每个人都只说对一句,说错一句。求五人各获哪项冠军。【算法】用1,2,3,4,5分别代表百米、二百米、跳高、跳远和铅球5个项目,用a,b,c,d,e分别代表五人。如b=3表示乙获跳高冠军。用多重循环穷举出来。【答案】甲乙丙丁戊12435【参考程序】vara,b,c,d,e:byte
7、;beginfora:=lto5doforb:二1to5doforc:=lto5doford:=lto5dobegine:=15-a-b-c-d;if(ord(b=5)+ord(d=3)=1)and(ord(a二1)+ord(e=4)=l)and(ord(c=4)+ord(d=2)=l)and(ord(b=3)+ord(e=5)=l)and(a*b*c*d*e=120)thenwritelnCa:’,a,’b:’,b,’