回 帖 发 新 帖 刷新版面

主题:[讨论]求教三题!急!

我是一名新手,有三题不会,请各位帮个忙!题目如下:
1、允许并列的排名
RANK.BAS / RANK.C / RANK.CPP / RANK.PAS
【问题描述】
    在我们参加的各种竞赛中,允许并列的排名方式是经常遇到的。
    例如有四名选手的成绩分别为50、80、50、30分,则80分的选手为第一名,50分的两名选手均为第二名,30分的选手为第四名。
    请编写一个程序,计算一个选手在这种排名方式之下的名次(分数高的选手排前面)。
【输入文件】
    文件名:RANK.IN
    文件第一行为一个整数 ,表示参赛的选手数, ,第二行为 个整数,表示每位选手的成绩,第三行为一个整数 ,表示要查询名次的选手的成绩。
【输出文件】
    文件名:RANK.OUT
    文件中只有一个整数,表示该选手的名次。
【样例输入】
4
50 80 50 30
50
【样例输出】
2

2、隐藏的最大整数
HIDE.BAS / HIDE.C / HIDE.CPP / HIDE.PAS
【问题描述】
    今天是个好日子,整数小伙伴们又一起出来聚会了。大家商议决定:今天玩捉迷藏!
玩法很简单,就是从所有人中找出一部分藏在一个长长的字符串中(任何两个人都不会并排藏在一起),而且,因为伙伴们太多,只找到此次藏起来的最大的那个伙伴就可以了。并且,大家一致同意,让“1”做第一个找人的人——当然,事先,他并不知道到底有哪些伙伴藏起来了……
    游戏开始了。“1”是一个很聪明的人,很快,他就把最大的那个伙伴找出来了……
    如果你是“1”,你能写个程序来解决这件事情么?
【输入文件】
    文件名:HIDE.IN
    文件中只有一个字符串,这里面藏有很多的整数小伙伴。
【输出文件】
    文件名:HIDE.OUT
    文件中只有一个整数,表示藏在其中的最大的那个整数小伙伴的位置(整数第一个数字在原串中的位置)。
    已知,所有的小伙伴都不会超过2000000000。
【样例输入】
*((*-a32AB342+//32143abAA
【样例输出】
17
【说明】
    这个串中共藏有32、342和32143三个小伙伴,其中32143是最大的,它在原来的串中的位置是17。

3、四色定理
FOURCOL.BAS / FOURCOL.C / FOURCOL.CPP / FOURCOL.PAS
【问题描述】
    著名的四色定理你一定听说过吧?这可是近代世界三大数学难题之一唷(顺便提上一句,另外两个是费马定理和哥德马赫猜想)。
    四色定理的提出来自英国。1852年,毕业于伦敦大学的弗南西斯•格思里(Francis Guthrie)在一家科研单位搞地图着色工作时,发现了一种有趣的现象:“看来,每幅地图都可以用四种颜色着色,使得有共同边界的国家着上不同的颜色。”(注意:只要求有公共边的区域不同色就可以,只有公共顶点的同色也没关系)
这个结论能不能从数学上加以严格证明呢?他和在大学读书的弟弟格里斯决心试一试。兄弟二人为证明这一问题而使用的稿纸已经堆了一大叠,可是研究工作没有进展。
    1852年10月23日,他的弟弟就这个问题的证明请教他的老师、著名数学家德•摩尔根,摩尔根也没有能找到解决这个问题的途径,于是写信向自己的好友、著名数学家哈密尔顿爵士请教。哈密尔顿接到摩尔根的信后,对四色问题进行论证。但直到1865年哈密尔顿逝世为止,问题也没有能够解决。
    直到1976年,在J. Koch的算法的支持下,美国数学家阿佩尔(Kenneth Appel)与哈肯(Wolfgang Haken)在美国伊利诺斯大学的两台不同的电子计算机上,用了1200个小时,作了100亿判断,才终于完成了四色定理的证明。
    你的任务相对那些数学家们来说当然要容易得多:你只要编写一个程序,计算一下在给定的一张有5个区域的地图上,用四种颜色填充不同区域,并保证有公共边的区域不同色的方案数有多少就可以了。
【输入文件】
    文件名:FOURCOL.IN
    文件第一行是一个整数 ( ),分别表示地图中有公共边的区域的信息数量。
    下面 行,每行一对整数,表示对所有区域编号之后,此两个编号的区域是有公共边的。
【输出文件】
    文件名:FOURCOL.OUT
    文件中只有一个整数,表示用四种颜色填充地图的总方案数。注意,在某些方案中,所有四种颜色不必都用到。
【样例输入】
4
1 2
1 3
1 4
1 5
【样例输出】
324

回复列表 (共5个回复)

沙发

1.
CLS
DIM m AS LONG
INPUT n
DIM s(n)
FOR i = 1 TO n
  INPUT s(i)
NEXT i
INPUT m
x = 1
FOR i = 1 TO n
  IF s(i) > m THEN
    x = x + 1
  END IF
NEXT i
PRINT LTRIM$(STR$(x))
END

板凳

2.
CLS
INPUT a$
max = 0
l = LEN(a$)
FOR i = 1 TO l
  n$ = RIGHT$(a$, l + 1 - i)
  n = VAL(n$)
  IF n > max THEN
    max = n
    w = i
  END IF
NEXT i
PRINT LTRIM$(STR$(w))
END

3 楼

3.
CLS
INPUT n
DIM a(n), b(n), c(5)
FOR i = 1 TO n
  INPUT a(i), b(i)
NEXT i
FOR a = 1 TO 4
  FOR b = 1 TO 4
    FOR c = 1 TO 4
      FOR d = 1 TO 4
        FOR e = 1 TO 4
          c(1) = a
          c(2) = b
          c(3) = c
          c(4) = d
          c(5) = e
          f = 1
          FOR i = 1 TO n
            IF c(a(i)) = c(b(i)) THEN
              f = 0
              EXIT FOR
            END IF
          NEXT i
          IF f = 1 THEN j = j + 1
        NEXT e
      NEXT d
    NEXT c
  NEXT b
NEXT a
PRINT LTRIM$(STR$(j))
END

4 楼

感谢!!
你的3题都对!再次感谢!

5 楼

你的第三题有点慢
应该优化一下

我来回复

您尚未登录,请登录后再回复。点此登录或注册