#include <bits/stdc++.h>
using namespace std;

int n, i, j;

int main ()
{
	cin >> n >> i >> j;
	
	for ( int g = 1; g <= n; g ++)
	{
		printf ( "(%d,%d) ", i,g);
	}
	cout << '\n';
	for ( int g = 1; g <= n; g ++)
	{
		printf ( "(%d,%d) ", g, j);
	}
	cout << '\n';
	
	if ( i < j )
	for ( int g = 1; g <= n; g ++)
	{
		if ( j-i+g > n) break;
		else printf ( "(%d,%d) ",g,g+j-i);
	}
	else if ( i > j)
	for ( int g = 1; g <= n; g ++)
	{
		if ( i-j+g > n ) break;
		else printf ( "(%d,%d) " , i-j+g,g);
	}
	else 
	for ( int g = 1; g <= n; g ++)
	{
		printf ( "(%d,%d) ",g,g);
	}
	cout << '\n';

	
	if ( i + j > n+1)
	for ( int g = n; g >= 1; g --)
	{
		if ( i+j-g > n) break;
		else printf ( "(%d,%d) ",g,i+j-g);
	}
	else if ( i+j < n+1)
	for ( int g = 1; g <= n; g --)
	{
		if (i+j-g < 1) break; 
		else printf ( "(%d,%d) ",i+j-g,g);
	}
	else //if ( i + j == n+1) 
	for ( int g = n; g >= 1; g --)
	{
		if ( n+1-g > n) break;
		else printf ( "(%d,%d) " ,g,n+1-g);
	}
	
	return 0;
}

1 comments

  • @ 2025-12-20 11:22:52

    你最后一种情况 i+j < n+1 枚举的时候应该是 g ++,手滑了吧

    #include <bits/stdc++.h>
    using namespace std;
    
    int n, i, j;
    
    int main ()
    {
    	cin >> n >> i >> j;
    	
    	for ( int g = 1; g <= n; g ++)
    	{
    		printf ( "(%d,%d) ", i,g);
    	}
    	cout << '\n';
    	for ( int g = 1; g <= n; g ++)
    	{
    		printf ( "(%d,%d) ", g, j);
    	}
    	cout << '\n';
    	
    	if ( i < j )
    	for ( int g = 1; g <= n; g ++)
    	{
    		if ( j-i+g > n) break;
    		else printf ( "(%d,%d) ",g,g+j-i);
    	}
    	else if ( i > j)
    	for ( int g = 1; g <= n; g ++)
    	{
    		if ( i-j+g > n ) break;
    		else printf ( "(%d,%d) " , i-j+g,g);
    	}
    	else 
    	for ( int g = 1; g <= n; g ++)
    	{
    		printf ( "(%d,%d) ",g,g);
    	}
    	cout << '\n';
    
    	
    	if ( i + j > n+1)
    	for ( int g = n; g >= 1; g --)
    	{
    		if ( i+j-g > n) break;
    		else printf ( "(%d,%d) ",g,i+j-g);
    	}
    	else if ( i+j < n+1)
    	for ( int g = 1; g <= n; g ++)
    	{
    		if (i+j-g < 1) break; 
    		else printf ( "(%d,%d) ",i+j-g,g);
    	}
    	else //if ( i + j == n+1) 
    	for ( int g = n; g >= 1; g --)
    	{
    		if ( n+1-g > n) break;
    		else printf ( "(%d,%d) " ,g,n+1-g);
    	}
    	
    	return 0;
    }
    
    • 1

    Information

    ID
    600
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    6
    Tags
    (None)
    # Submissions
    239
    Accepted
    71
    Uploaded By