凌晨四点醒来,发现海棠未眠。如果一朵花很美,那么有时我会不由自主地想到:“要活下去!”
做难题好累,于是有了简单题。
-----我
#include<stdio.h>
int main(){
int n,a,b;
scanf("%d %d %d",&n,&a,&b);
int i,j;
for(j=1;j<=n;j++){
//同一行上格子的位置
printf("(%d,%d) ",a,j);
}
printf("\n");
for(i=1;i<=n;i++){
//同一列上格子的位置
printf("(%d,%d) ",i,b);
}
printf("\n");
for(i=1;i<=n;i++){
//左上到右下对角线上的格子的位置
for(j=1;j<=n;j++){
if(i-j==a-b){
printf("(%d,%d) ",i,j);
}
}
}
printf("\n");
for(i=n;i>=1;i--){
//左下到右上对角线上的格子的位置
for(j=1;j<=n;j++){
if(i+j==b+a){
printf("(%d,%d) ",i,j);
}
}
}
return 0;
}
前两行就不多说什么了,让我们把注意都放在对角线上。
左上到右下对角线上的格子的位置:
这个符合要求的点的横坐标减去纵坐标应该等于输入的点的横坐标减去纵坐标【五颗星】
所以根据这个规律可以用二重循环筛选出合适的数进行输出。
左下到右上对角线上的格子的位置:
这个符合要求的点的横坐标加上纵坐标应该等于输入的点的横坐标加上纵坐标【*****】
注意:由于是从左下开始,所以 i 变量要从n减到1。