同行列对角线的格子

Posted huashanqingzhu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了同行列对角线的格子相关的知识,希望对你有一定的参考价值。

传送门: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("
");
10     
11     for(x=1;x<=n;x++) printf("(%d,%d) ",x,j);//输出第j列
12     printf("
");
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("
");
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 }
代码一

 








以上是关于同行列对角线的格子的主要内容,如果未能解决你的问题,请参考以下文章

02:同行列对角线的格子

同行列对角线的格子

同行列对角线的格

java算法 蓝桥杯 格子位置

2021-11-09:设计井字棋。谁先同行或者同列都是自己的棋子,就算获得胜利 。力扣348。

三阶幻方