回 帖 发 新 帖 刷新版面

主题:[讨论]“架设桥梁”问题

2007年赣州市青少年计算机奥林匹克竞赛上机试题,第七题“架设桥梁”问题
这个题目我是找规律算出来的,不知道对不对,大家还有没有其他的算法?
PROGRAM BRIDGE;
VAR
   m,n,i,j,s:integer;
procedure jif(j:integer; var s:integer);
  var k,w:integer;
  begin
   k:=j div 2; w:=j mod 2;
   s:=(k-1)*(2+k)-k+w*k+2;
   end;
begin
  m:=2;   readln(n);
   if n<0 then writeln('input error')
     else if (n>=0) and (n<=1) then m:=0
        else if n=2 then m:=2
           else jif(n,m);
   writeln('m=',m);
end.
其中N是城市个数,M是假架设桥梁数的最大值

回复列表 (共5个回复)

沙发

首先,没必要判断N是否超越范围
第二,能不能讲清楚那个过程;
谢谢!!!!!!!!!!!!

板凳


为什么没必要判断N是否超越范围?
我是先找出规律,再用数列的前N项和求M。

3 楼

请把题目描述发出来

4 楼


是否能直接从中找规律,就是N与M的关系?

5 楼

以下就是问题描述:

                        [b]架设桥梁[/b]
在未来的空中都市中,有很多小岛(城区),现在要求在这些小岛之间架一些桥梁,每座桥是指在两个岛之间的通道。有个约定,如果A和B之间有桥,B与C之间有桥,则A与C之间就不能再有桥了,即对于城市中的任意三个岛,不能在其中的两两之间都架上桥。在这样的约定下,要求架的桥的数量最多,当然不必考虑具体的空间结构问题。
输入输出要求:
输入文件中只包含一行,其中仅有n,0≤n≤1000,表示小岛的数量。
输出文件中只包含一行,表示最多能架设的桥梁的数量。
    输入输出示例:输入:6
输出:9

我来回复

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