-
描述
輸入三個自然數n,i,j(1<=i<=n,1<=j<=n).n表示有一個n行n列的棋盤格子,(i,j)表示棋盤中格子的位置如:n=4,i=2,j=3表示了棋盤中的第二行第三列的格子,如:
(2,3)表示該格為第2行第3列
要求編製一個程式,根據輸入的n,i,j的值,輸出與格子(i,j)在同一行、同一列、同一對角線上的所有格子位置,例如:當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=? 每個數一行以n=0結束
-
輸出
-
根據輸入的n,i,j的值,輸出與格子(i,j)在同一行、同一列、同一對角線上的所有格子位置每組測試資料輸入四行,分別是: {同一行格子的位置} {同一列格子的位置} {左上到右下對角線上的格子位置} {左下到右上對角線上的格子位置}
每個位置用一個半形小括弧括起來,相鄰的位置之間沒有別的字元
-
範例輸入
-
n=4i=2j=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)
-
來源
-
NOIP96(by Rz)
簡單的尋找題目,注意邊界條件即可
#include <stdio.h> #include<math.h>main() { int n,i,j;int k,l;char a,b;scanf("%c%c%d",&a,&b,&n); while(n!=0) { getchar();scanf("%c%c%d",&a,&b,&i);getchar();scanf("%c%c%d",&a,&b,&j);getchar();for(k=1;k<=n;k++) { printf("(%d,%d)",i,k);} printf("\n");for(k=1;k<=n;k++) { printf("(%d,%d)",k,j);} printf("\n");for(k=1;k<=n;k++) for(l=1;l<=n;l++) { if((l-k)==abs(i-j)) { if(i>j) printf("(%d,%d)",l,k); else printf("(%d,%d)",k,l);} } printf("\n"); for(k=n;k>=1;k--) for(l=1;l<=n;l++) { if((l+k)==(i+j)) printf("(%d,%d)",k,l);} printf("\n"); scanf("%c%c%d",&a,&b,&n);} return 0; }