信息学奥赛一本通C++语言-----1120:同行列对角线的格
【題目描述】
輸入三個自然數nn,ii,j(1≤i≤n,1≤j≤n)j(1≤i≤n,1≤j≤n),輸出在一個n×nn×n格的棋盤中(行列均從11開始編號),與格子(ii,jj)同行、同列、同一對角線的所有格子的位置。
如:n=4n=4,i=2i=2,j=3j=3表示了棋盤中的第二行第三列的格子,
當n=4n=4,i=2i=2,j=3j=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)?? ? ? ? ? ? ?左下到右上對角線上的格子的位置
【輸入】
一行,三個自然數nn,ii,jj,相鄰兩個數之間用單個空格隔開(1≤n≤101≤n≤10)。
【輸出】
第一行:從左到右輸出同一行格子位置;
第二行:從上到下輸出同一列格子位置;
第三行:從左上到右下輸出同一對角線格子位置;
第四行:從左下到右上輸出同一對角線格子位置。
其中每個格子位置用如下格式輸出:(xx,yy),xx為行號,yy為列號,采用英文標點,中間無空格。相鄰兩個格子位置之間用單個空格隔開。
【輸入樣例】
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)【代碼】
#include<cstdio> #include<iostream> using namespace std; int main() {int n,i,j;cin>>n>>i>>j;//輸出同一行的格子位置for(int x=1;x<=n;x++)printf("(%d,%d) ",i,x); cout<<endl;//輸出同一列的格子位置for(int x=1;x<=n;x++)printf("(%d,%d) ",x,j); cout<<endl;//對角線 左上到右下for(int x=1;x<=n;x++)for(int y=1;y<=n;y++)if(x-y==i-j) printf("(%d,%d) ",x,y); cout<<endl;//對角線 左下到右上 for(int x=n;x>=1;x--)for(int y=n;y>=1;y--)if(x+y==i+j) printf("(%d,%d) ",x,y); cout<<endl;return 0; }【做題鏈接】
信息學奧賽一本通(C++版)在線評測系統 (ssoier.cn)http://ybt.ssoier.cn:8088/problem_show.php?pid=1120
總結
以上是生活随笔為你收集整理的信息学奥赛一本通C++语言-----1120:同行列对角线的格的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 视频教程-图解Python编程神器Jup
- 下一篇: Wampserver 80端口被占用