Chinaunix首页 | 论坛 | 博客
  • 博客访问: 76921
  • 博文数量: 29
  • 博客积分: 2000
  • 博客等级: 大尉
  • 技术积分: 337
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-24 20:02
文章分类

全部博文(29)

文章存档

2011年(1)

2009年(1)

2008年(27)

我的朋友

分类:

2008-12-07 19:00:22

 34. ( 取棋子 ) 设有N颗棋子,由人和计算机轮流从中取走若干颗。每方每次最
 多取K颗,最少取1颗 (K值不能超过总数的一半,也不能小于1)。试编写一程
 序使计算机有较多的获胜机会。

    屏幕输入提示:

    (1) 输入竞赛规则:A. 取最后一颗棋子的那一方为败.
                      B. 取最后一颗棋子的那一方为胜.
    (2) 总共有多少颗棋子?
    (3) 一次最多取几颗?
    (4) 谁先取?
    (5) 每个回合都应显示: A. 你取几颗?
                          B. 我取走......颗,还剩......颗.
    (6) 竞赛过程中发生违例时,打印出:  竞赛无法进行下去!
    (7) 竞赛结束后打印:
    I win!(我胜!)或  You win!(你胜!)。

 35. ( Grundy博弈 ) 在两位选手面前放着一堆铜币。第一位选手把原堆分成不相
 等的两堆。然后每个选手轮流地这样做,即当轮到某一方分时, 他把已被分开的任
 一堆再分成不相等的两堆。博弈这样一直进行下去,直到每一堆都只剩下一个或两
 个铜币为止,这时博弈结束。规定首先遇到这种情况的选手为输。

 
作者:GCC
专家分:14380
 会员信息
 发短消息  
 所属BLOG
    
发表时间:2006-4-14 11:57:00    [回复]  [引用]
7 楼  
36. 猴子选大王:
   ① N 只猴子站成一行,每隔 M 只从头到尾报数,反复进行,报过数的退出,打
 印每次退出的猴子的编号,直到剩下一只为止。
   ② N 只猴子站成一行,每 M 只报数。先从头到尾,报到尾后,再返回从尾到头
 报数,打印每次方向及过程,直到剩下二只时,以排到后面的(指报数方向)为大王。
   ③ N 只猴子围成一圈,从第 P 个开始,每隔 M 只报数,打印每次过程,只剩下
 一个时为大王。



 37. 已知 N 个正整数满足 K1+K2+...+Kn=M。求一组最佳的分解,使得
 K1*K2*....*Kn 为最大。
   例如:N=2时,给定 K1+K2=6,当 K1=3,K2=3 时,K1*K2=9 为最大


 38. 有一集合中有 N 个元素,每个元素均为自然数。给定一个 total (假设每个
 元素值均小于total),求满足条件的所有子集,子集中各元素之和应等于total。

 39. 一个集合满足如下条件:
   (1)1是集合的元素;
   (2) 若 P 是集合的元素,则 2*P+1,4*P+5 也是集合的元素。
 求:此集合中最小的 K 个元素。
  ③ 对ABC作全排列而得的六个三位数之和为 2886。



 40. 一个整型变量只能用来存贮较小的 N!的值,当 N 较大时,可将阶乘值中的
 每一个数字放在一个一维数组的一个元素中。使用这方法,打印:
    ① N!的值;
    ② N!-M!(M>N);
    ③ N!+M!

 
作者:GCC
专家分:14380
 会员信息
 发短消息  
 所属BLOG
    
发表时间:2006-4-14 11:57:00    [回复]  [引用]
8 楼  
41. (合并链表) 已知两个链表 AN={a1,a2,...an}, BN={b1,b2,...bm}, 将其合并
 为一个链表 CN={a1,b1,a2,b2,...}



 42. (算术表达式求值) 输入一个由数字、+,-,*,/ 及括号组成的算术表达式,
 求其值。



 43. 对于次数很高,但项目很少的多项式,可用链表来表示。
  例如:X^1000-76*X^76+3*X^3-7可表示为

  ┌─┬──┬─┐  ┌──┬─┬─┐   ┌─┬─┬─┐  ┌─┬─┬──┐
  │1 │1000│  ┼→│-76 │78│  ┼→ │3 │3 │  ┼→│-7│0 │ NIL│
  └─┴──┴─┘  └──┴─┴─┘   └─┴─┴─┘  └─┴─┴──┘

 在此方式下,编程完成两个多项式的加法与乘法。



 44. (一元多项式加法) 实现两个整系数一元多项式的加法。例如, 对于多项式
 5*X^6+4*X^3-7*X^4+1 与多项式 50*X^2+4*X, 运算结果为:
 5*X^6-7*X^4+4*X^3+50*X^2+4*X+1。

   程序要求:键盘输入多项式的各项系数及指数,每项系数及指数为一组数据(系
 数及指数之一可为零),以'0,0'结束一个多项式的输入,结果按降幂排列,同类
 项要合并(指数最大不超过30)。

   上例第一式的输入为:    5,6
                           4,3
                          -7,4
                           1,0
                           0,0
  输出结果应为:5*x^6-7*x^4+4*x^3+50*x^2+4*x+1.


 45. (数列的最小代价) 给定一个正整数序列,例如:4,1,2,3, 不改变数的位置把
 它们相加, 并且由括号来标记每一次加法所得到的和。例如:((4+1)+(2+3))=
 ((5)+(5))=10. 除去原数4、1、2、3之外,其余都为中间结果,如:5,5,10, 将中
 间结果相加,得到:5+5+10=20, 数 20 称为此数列的一个代价。对于另一种算法:
 (4+((1+2)+3))=(4+((3+3))=(4+(6))=10, 得到数列的另一个代价为:3+6+10=19.
 若给出 N 个数的数列,求出此数列的最小代价。

 
作者:GCC
专家分:14380
 会员信息
 发短消息  
 所属BLOG
    
发表时间:2006-4-14 11:58:00    [回复]  [引用]
9 楼  
46. 设有一个字符串,长度小于 100,且全部以英文字母组成。对字串中的每个字
 母可用 0,1,2 三个数字进行编码,且数字可以重复使用。
 程序要求:(1) 输入字符串,并能判断输入是否有错;
           (2) 输出对应的编码表及码长,要求字串的编码总长度为最短;
           (3) 根据上述编码表,给出一些编码,然后求出其原字符串。
 例如:输入的字符为:ABCBAAADDEF
     其对应的编码表为:
         A:   2                B:  10
         C:  11                D:  12
         E:  00                F:  O1
 对应的编码为:210111022212120001       总码长为:18
 根据该编码,给出编码:010001121110222   则输出字串:FEFDCBAAAA.

 47. 某些密码由 N 个英文字母组成(N〈26), 每个字母的平均使用率为:W1,W2,...
 ,Wn, 要求编程完成下列任务:
    ① 键入英文字母及个数;
    ② 键入N个英文字母的使用频率;
    ③ 用二进制数对该N个英文字母进行编码(最短,无二义性);
    ④ 键入字母短文(单词用空格区分),输出相应编码;
    ⑤ 键入二进制编码短文,输出译文。

 48. 将4个红球,3个白球与3个黄球排成一排,共有多少种排法?

 49. 有面值为 M..N 的邮票各一枚,共能拼出多少不同的面额。

 50. 有一个四阶方阵,随机产生 1..16 这 16 个自然数(不重复),依次填入每
 个方格中。要求用最少的对调次数,使每一行、每一列以及对角线上的四个数之和
 均相等。打印每一次对调的过程。

 51. 微型蓝球赛. 甲,乙两队进行蓝球比赛,结果甲队以S:T 获胜.(T 由键盘输入). 比赛中, 甲队得分始终领先(严格大于乙队). 规定以任何方式进一
 球都只得一分. 编程序打印该比赛的每一种可能的不同的得分过程, 以及所有不同
 过程的总数.

 
作者:GCC
专家分:14380
 会员信息
 发短消息  
 所属BLOG
    
发表时间:2006-4-14 11:59:00    [回复]  [引用]
10 楼  
52. 求两整型数组错位相加的最大面积.
    设整型数组 C 具有 N 个分量: C=(C1,C2,...,CN), 两相连分量(C[I],C[I+1])
 可计算一个面积: 若C[I],C[I+1]同号, 则面积 SI=abs(C[I]+C[I+1])/2, 否则,面
 积等于 (abs(a*C[I])+abs(b*C[I+1]))/2, 其中, a>0,b>0,a+b=1 (详见下图),数
 组 C 的面积 A=S[1]+S[2]+...+S[N-1].
     编程要求如下:
  从键盘输入 N, 再输入两个具有 N 个分量的数组: A1,A2:ARRAY [1..N] OF
 INTEGER; 将 A1,A2 错位相加(详见后面的例子)得数组A3, 求 A3 的面积.编程给
 出一个错位相加的方案, 使 A3 的面积最大.
    例: 设 N=3, A1=(3,7,2), A2=(-5,7,-4), 则应考虑 9 种情况:
                    (1)                         (2)
        A1  3  7  2                       3  7  2
        A2              -5  7  -4                  -5  7  -4
        A3  3  7  2  0  -5  7  -4         3  7  2  -5  7  -4
                    (3)                         (9)
        A1  3  7  2                                     3  7  2
        A2       -5  7 -4       ......     -5  7  -4
        A3  3  7 -3  7 -4                  -5  7  -4  0 3  7  2

 53. (工作安排问题) 现有 N (N≤8) 件工作, 分别由 N 个人完成, 每人都完成一
 件,且只完成一件, 每人完成不同工作的时间不同. 试设计一种分配工作方案, 使
 完成 N 件工作所需的总时间最少.
    原始数据由文本文件 EXAM1.TXT 给出, 其格式如下:
    第 1 行:        工作任务数(N)
    第 2 -- N+1 行: 第 i+1 行为第 i 个人完成各件工作所需的时间. 以上各数
 均为不超过 1000 的正整数.
    计算结果可直接在屏幕上输出: 第一行为工作分配方案, 共 N 组, 每组数据的
 形式为 a-b, 其中 a 为工作人员编号, b 为他应完成的工作序号.
    例: 设 EXAM1.TXT 的数据为:
         4
         2  15  13  4
         10  4  14  15
         9  14  16  13
         7  8  11  9
     对此, 一个正确的输出可以是
         1-4, 2-2, 3-1, 4-3
         TOTAL=28

 54. 求N个字符串的最长公共子串,N<=20,字符串长度不超过255。
    例如:N=3,由键盘依次输入三个字符串为
      What is local bus ?
      Name some local buses.
      local bus is a high speed I/O bus close to the processer.
 则最长公共子串为"local bus"。
 ( 参看程序 9 )

 55. (液晶显示) 下图是用液晶七笔阿拉数字表示的十个数字,我们把横和竖的一
 个短划都称为一笔,即7有3笔,8有7笔等。请把这十个数字重新排列,要做到
 两相邻数字都可以由另一个数字加上几笔或减去几笔组成,但不能又加又减。比如
 7→3是允许的,7→2不允许。编程打印出所有可能的排列。
    如:4107395682。

 56. (N阶梵塔) 有K根棒,第一根上放N片大小不等的圆盘,并保持上小下大的
 顺序。现将N片圆盘从第1根移至第K根,移动中均保持上小下大的顺序,问最少
 移几次方得结果,求出移动方案。
 ( 参看程序 3 )
7. 某一印刷厂有六项加工任务,对印刷车间和装订车间所需时间见下表(时间单
 位:天)
            任务  │J1  J2  J3  J4  J5  J6
        ─────┼───────────────
          印刷车间│ 3  12  5   2   9  11
          装订车间│ 8  10  9   6   3  1
 如何安排加工顺序,使加工时间最少。

 58. 将7万元投资到A,B,C三项目上,其利润见下表:
        投资额(万元)│ 1    2    3    4    5    6    7
        ──────┼────────────────────
            项  A  │0.11  0.13  0.15  0.24  0.24  0.30  0.35
                B  │0.12  0.16  0.21  0.25  0.25  0.29  0.34
            目  C  │0.08  0.12  0.20  0.26  0.26  0.30  0.35
  如何分配投资额,使获得的利润最大。

 59. 无根树与通常所说的树(有根树)很相似,它包含有节点和枝,但不含有根。
 无根树节点之间只有相邻关系。如图一所示,是一棵有七个节点的无根树,以图一
 的A为根节点得到图二所示的有根树,以B为根节点得到图三所示的有根树,但从
 无根树的角度看,图一、二、三是结构相同的无根树,同时无根树的结构与节点的
 名称无关。
    有根树可以用字符串的形式表示,其递归表示方法是:
        根节点(子树1    子树2    子树3...)
 图一,图二的有根树可表示为 A(B(CF(EGD))) 和 B(ACF(EGD))。由于子树的表示
 顺序可以不同,所以一棵有根树可以有多种表示方法,如图三又可表示成
 B(F(EGD)CA) 或 B(ACF(DE(G)) 等。表示无根树时,可以以它任一节点为根节点,
 将其看作有根树,从而可以利用有根树的字符串表示形式来表示无根树。
    任务一:由键盘读入一个字符串表示的无根树,无根树的各节点的名称用互不
 相同的大写英文字母表示。由用户输入一个节点的名称,程序应能够输出一种以该
 节点为根节点的字符串形式。程序输出无根树的字符串形式时,各个节点的名称无
 关紧要,所有节点都以P表示,以后的各种输出也采用这种形式。例如:输入无根
 树的字符串形式:A(B(CD(EF))),指定根节点为D,程序应能输出
 P(P(PP)PP),P(PP(PP)P),P(PPP(PP))中的任意
 一种即可。
    任务二:输入两个串表示的无根树,判断其结构是否一样。注意它与节点名称
 无关,只考虑结构。
    任务三:输入无根树的总枝数N(1<=N<=11),输出所有枝数为N的互不相同
 的无根树,并记录总数。以字符串形式输出,例如:N=5 时共有6种不同结构的无
 根树。
    注意:各种树结构的字符串表达形式不唯一。

 60. 用N*N(1<=N<=8)的格点阵代表海,其中*号代表岛。给你一组编
 码信息,让你重构一张地图。这组信息是按垂直方向,水平方向岛的情况摘取的。
 下例中,每行右边的数字按顺序表示该行中“岛组”的大小,如第一行数字为
 “12”,表示该行第一“岛组”由一个岛组成,第二“岛组”由两个岛组成,而
 第四列下面的“23”则表示本列由两个“岛组”组成,第一个“岛组”由两个岛
 组成,第二个“岛组”由三个岛组成。
    任务:编程执行以下步骤,直到给定的输入 (ASCII) 文件中的信息组全部读完
 为止,步骤如下:
   (1)从输入文件 (ASCII 文件)中读入下一个信息块,并将它显示在屏幕上。
 每个信息块组成为:
    格点阵大小 (N),以后是行的约束条件(N行的),列的约束条件(N列的),
 每行(或每列)的约束条件是
    一行数字,数字间有空格,最后用0结束。上面的例子如图所示。
   (2)重构这张地图(若有多个解,要逐个构成地图),并显示。
   (3)将重构的地图以ASCII文件形式输出。每岛以*后加一个空格表示;
 空白处用连续的两个空格表示。若同一已知条件可画出多张地图,相互间用空行隔
 开;若一组已知条件画不出地图,用“NO  MAP(占一行)表示。由不同的信
 息组求得的解用“NEXT  PROBLEM”(占一行表示)1<=N<=8.

 
阅读(1281) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~