1 条题解

  • 0
    @ 2025-8-24 21:07:17

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar ·糯·
    私だけの前に行く足が、輝いています||Vergiss mich aus deinem Gedächtnis||lonely seven

    搬运于2025-08-24 21:07:16,当前版本为作者最后更新于2021-07-03 11:01:09,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    题目分析

    第一种情况:同行,那么我们要输出与它同行的所有点,即它的横坐标与所有的纵坐标搭配;
    第二种情况:同列,那么我们要输出与它同列的所有点,即所有的横坐标与它的纵坐标搭配;
    第三种情况:左上至右下同一对角线,那么此时,这个符合要求的点的横坐标减去纵坐标应该等于输入的点的横坐标减去纵坐标,所以我们在二重循环内每次做一个判断,满足要求就输出;
    第四种情况:右上至左下同一对角线,那么此时,这个符合要求的点的横坐标加上纵坐标应该等于输入的点的横坐标加上纵坐标,所以我们同样在二重循环内每次做一个判断,满足要求就输出。

    代码实现

    #include<bits/stdc++.h>
    using namespace std;
    int main()
    {
        int n,x,y;
        cin>>n>>x>>y;
        for(int i=1;i<=n;i++){
            cout<<"("<<x<<","<<i<<")"<<" ";    	
        }
        cout<<endl;
        for(int i=1;i<=n;i++){
            cout<<"("<<i<<","<<y<<")"<<" ";    	
        }
        cout<<endl;
        for(int i=1;i<=n;i++){
            for(int j=1;j<=n;j++){
    		    if(i-j==x-y){
    		        cout<<"("<<i<<","<<j<<")"<<" ";	
    		    }
    	    }
        }
        cout<<endl;
        for(int i=n;i>=1;i--){
            for(int j=1;j<=n;j++){
    		    if(i+j==x+y){
    		        cout<<"("<<i<<","<<j<<")"<<" ";	
    		    }
    	    }
        }
        cout<<endl;
    	return 0;
    }
    
    • 1

    信息

    ID
    6957
    时间
    1000ms
    内存
    128MiB
    难度
    1
    标签
    递交数
    1
    已通过
    1
    上传者