码迷,mamicode.com
首页 > 其他好文 > 详细

同行列对角线的格子

时间:2018-11-29 11:14:59      阅读:268      评论:0      收藏:0      [点我收藏+]

标签:sed   isp   close   display   来源   none   main   clu   color   

传送门:http://noi.openjudge.cn/ch0108/02/
总时间限制: 1000ms 内存限制: 65536kB
描述

输入三个自然数N,i,j (1<=i<=N,1<=j<=N),输出在一个N*N格的棋盘中(行列均从1开始编号),与格子(i,j)同行、同列、同一对角线的所有格子的位置。

如:n=4,i=2,j=3表示了棋盘中的第二行第三列的格子,如下图:

技术分享图片

当n=4,i=2,j=3时,输出的结果是:

(2,1) (2,2) (2,3) (2,4)                        同一行上格子的位置

(1,3) (2,3) (3,3) (4,3)                        同一列上格子的位置

(1,2) (2,3) (3,4)                              左上到右下对角线上的格子的位置

(4,1) (3,2) (2,3) (1,4)                        左下到右上对角线上的格子的位置

 

输入一行,三个自然数N,i,j,相邻两个数之间用单个空格隔开。1 <= N <= 10。输出四行:
第一行:从左到右输出同一行格子位置;
第二行:从上到下输出同一列格子位置;
第三行:从左上到右下输出同一对角线格子位置;
第四行:从左下到右上输出同一对角线格子位置。

其中每个格子位置用如下格式输出:(x,y),x为行号,y为列号,采用英文标点,中间无空格。
相邻两个格子位置之间用单个空格隔开。样例输入

4 2 3

样例输出

(2,1) (2,2) (2,3) (2,4)
(1,3) (2,3) (3,3) (4,3)
(1,2) (2,3) (3,4)
(4,1) (3,2) (2,3) (1,4)

来源NOIP1996复赛 普及组 第二题

技术分享图片
 1 #include <stdio.h>
 2 int main(int argc, char *argv[])
 3 {
 4     int n,i,j,x,y;
 5     
 6     scanf("%d%d%d",&n,&i,&j);
 7     
 8     for(y=1;y<=n;y++) printf("(%d,%d) ",i,y);//输出第i行 
 9     printf("\n");
10     
11     for(x=1;x<=n;x++) printf("(%d,%d) ",x,j);//输出第j列
12     printf("\n");
13     
14     //从左上到右下的的斜线上的元素位置坐标的横、纵坐标只差保持不变。 
15     if(i<=j)//在矩阵的右上三角部分 
16     {
17         x=1;
18         y=(j-i)+x;
19         while(y<=n)
20         {
21             printf("(%d,%d) ",x,y);
22             x++; y++;
23         }
24     }
25     else//在矩阵的左下三角部分 
26     {
27         y=1;
28         x=(i-j)+y;
29         while(x<=n)
30         {
31             printf("(%d,%d) ",x,y);
32             x++; y++;
33         }
34     }
35     printf("\n");
36     
37     //从左下到右上的斜线上的元素横、纵坐标之和相等 
38     if(i+j>n)//在矩阵的右下三角部分
39     {
40         x=n;
41         y=i+j-x;
42         while(y<=n)
43         {
44             printf("(%d,%d) ",x,y);
45             x--; y++;
46         }
47     }
48     else//在矩阵的左上三角部分
49     {
50         y=1;
51         x=i+j-y;
52         while(x>=1)
53         {
54             printf("(%d,%d) ",x,y);
55             x--; y++;
56         }
57     } 
58     return 0;
59 }
代码一

 

同行列对角线的格子

标签:sed   isp   close   display   来源   none   main   clu   color   

原文地址:https://www.cnblogs.com/huashanqingzhu/p/10036184.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!