回 帖 发 新 帖 刷新版面

主题:[讨论]有奖竞编,先编得分

1. 设有一个n*m方格的棋盘(1≤m,n≤100)。(30%)
   求出该棋盘中包含多少个正方形、多少个长方形(不包括正方形)。
   
    例如:当n=2,m=3时
        
        

正方形的个数有8个;即边长为1的正方形有6个;
                      边长为2的正方形有2个。

长方形的个数有10个;
    即2*1的长方形有4个;

          1*2的长方形有3个;
          
          3*1的长方形有2个;
          
          3*2的长方形有1个。


程序要求:输入:n和m          输出:正方形的个数与长方形的个数

如上例:输入:2  3              输出:8,10

2.将1,2,······,9共9个数排成下列形态的三角形。(30%)
                        a
                     b      c
                  d            e
                f     g     h     i
    
    其中:a~i分别表示1,2,······,9中的一个数字,并要求同时满足下列条件:
    (1)a<f<i;
    (2)b<d, g<h, c<e
    (3)a+b+d+f=f+g+h+i=i+e+c+a=P
    
    程序要求:
      根据输入的边长之和P
      输出所有满足上述条件的三角形的个数以及其中的一种方案。
  

3.设有一个N*M(l≤ N≤50, l≤ M≤ 50)的街道(如下图):(40%) 
 




 
    
    规定行人从A(1,1)出发,在街道上只能向东或北方向行走。 
如下为N=3,M=3的街道图,从A出发到达B共有6条可供行走的路径:

       A6      A7      B(N,M)
 
       A3      A4      A5 

       A      A1      A2
    

若在N*M的街道中,设置一个矩形障碍区域(包括围住该区域的街道)不让行人通行,如图中用“*”表示的部分。

此矩形障碍区域用2对顶点坐标给出,前图中的2对顶点坐标为:(2,2),(8,4),此时从 A出发到达B的路径仅有两条。 

    程序要求:
       
    任务一:给出N,M后,求出所有从A出发到达B的路径的条数。 
   
    任务二:给出N,M,同时再给出此街道中的矩形障碍区域的2对顶点坐标(X1,y1), (X2,Y2),然后求出此种情况下所有从A出发到达B的路径的条数。 

回复列表 (共6个回复)

沙发

var
m,n,i,j,s:integer;
begin
readln(m,n);
s:=n*(n+1)/2+m*(m+1)/2;
if m>n then x:=n else x:=m;
for i:= x downto 1 do
j:=j+i*i;
writeln(s-j, ,j);
end.

板凳

1楼是我写的,有错误 sorry
修正如下
1.
var
m,n,i,j,s:integer;
begin
readln(m,n);
s:=n*(n+1)/2+m*(m+1)/2;
if m>n then x:=n else x:=m;
for i:= x-1 downto 1 do
j:=j+(m-i)*(n-i)
writeln(s-j, ,j);
end.

3 楼

第一题最简单的思路:模拟

4 楼

最后一题:
直接加,如图:(例)
1 3 6 10 15
1 2 3 4  5
1 1 1 1  1
看出什么了吗?每个数等于左边的数加下边的数的和(最左边的一列和最下边的一行都为1(固定)).

5 楼

继续努力.

6 楼

这个怎么样,
var
   i,k,n,m,x,y,z:integer;
begin
   write('please input n,m:');
   read(n,m);
   if n>m then k:=m   
      else k:=n;
   x:=0;
   for i:=1 to k do 
     x:=x+(n-i+1)*(m-i+1);
     y:=n*(n+1)*m*(m+1) div 4;
     z:=y-x;
   writeln('output:',x,',',z);
end.

我来回复

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