7 solutions

  • 8
    @ 2024-5-12 10:30:44
    /*
    观察每个对角线的起点和每次填写的次数,
    根据当前需要填写的行数的奇偶去判断是从左下到右上,还是右上到左下 
    
    */
    #include<bits/stdc++.h>
    using namespace std;
    const int N=20;
    int g[N][N];
    int main()
    {
    	int n;
    	cin>>n;
    	int cnt=1;
    	for(int i=1;i<=n;i++) //填写第i列的起点 
    	{
    		if(i%2==0) //偶数行左上到右下 
    		{
    			for(int x=1,y=i;x<=i;x++,y--) //从(1,i) 
    			{
    				g[x][y]=cnt++;
    			}
    		}
    		else //奇数行左下到右上 
    		{
    			for(int x=i,y=1;y<=i;x--,y++) //从(i,1) 
    			{
    				g[x][y]=cnt++;
    			}
    		}
    		
    	}
    	for(int i=1;i<=n;i++)
    	{
    		for(int j=1;j<=n-i+1;j++)
    		{
    			cout<<g[i][j]<<" ";
    		}
    		cout<<endl;
    	}
    	return 0;
    }
    
    • 5
      @ 2024-7-6 11:08:40
      #include<bits/stdc++.h>
      using namespace std;
      const int N=25;
      int dx[]={-1,0,1,1};//行下左上右
      int dy[]={1,1,-1,0};//列下左上右
      int a[N][N];
      int main()
      {
          int n;
          cin>>n;
          int d=0;
          int x=1,y=1;
          for(int i=1;i<=n*(n+1)/2;i++)
          {
              a[x][y]=i;
              int tx=x+dx[d],ty=y+dy[d];
              //(tx,ty)是由(x,y)通过d方向可以走到的点 
              if(tx<1||ty<1) 
              //越界,或者(tx,ty)已经有数 
              {
                  d++; //换个方向 
                  if(d==4) d=0; //方向走完以后从下开始 
                  tx=x+dx[d],ty=y+dy[d]; 
                  d++;
                  if(d==4) d=0; //方向走完以后从下开始 
                  //由新的方向可以走到的位置 
              }
              x=tx,y=ty;
          }   
          for(int i=1;i<=n;i++)
          {
              for(int j=1;j<=n-i+1;j++)
              {
                  cout<<a[i][j]<<" ";
              }
              cout<<endl; 
          }
          return 0;
      }
      
      • 0
        @ 2025-3-17 20:21:27
        /*
        观察每个对角线的起点和每次填写的次数,
        根据当前需要填写的行数的奇偶去判断是从左下到右上,还是右上到左下 
        
        */
        #include<bits/stdc++.h>
        using namespace std;
        const int N=20;
        int g[N][N];
        int main()
        {
        	int n;
        	cin>>n;
        	int cnt=1;
        	for(int i=1;i<=n;i++) //填写第i列的起点 
        	{
        		if(i%2==0) //偶数行左上到右下 
        		{
        			for(int x=1,y=i;x<=i;x++,y--) //从(1,i) 
        			{
        				g[x][y]=cnt++;
        			}
        		}
        		else //奇数行左下到右上 
        		{
        			for(int x=i,y=1;y<=i;x--,y++) //从(i,1) 
        			{
        				g[x][y]=cnt++;
        			}
        		}
        		
        	}
        	for(int i=1;i<=n;i++)
        	{
        		for(int j=1;j<=n-i+1;j++)
        		{
        			cout<<g[i][j]<<" ";
        		}
        		cout<<endl;
        	}
        	return 0;
        }
        • 0
          @ 2025-3-17 20:20:44
          5
            asklgh
          
            rqc
            gwg
            e 
            e 
            gwre
             wre w
        • -1
          @ 2024-12-6 13:29:11
          #include<bits/stdc++.h>
          using namespace std;
          const int N=20;
          int g[20][20];
          int main()
          {
          	int n;
          	cin>>n;
          	int cnt=1;
          	for(int i=1;i<=n;i++) //填写第i列的起点 
          	{
          		for(int x=1,y=i;x<=i;x++,y--) //从(1,i) 
          		{
          			g[x][y]=cnt++;
          		}
          	}
          	for(int i=1;i<=n;i++)
          	{
          		for(int j=1;j<=n-i+1;j++)
          		{
                      if(g[i][j] !=0)
          				cout<<g[i][j]<<" ";
          		}
          		cout<<endl;
          	}
          	return 0;
          }
          
          
          • -3
            @ 2024-6-12 20:20:54
            #include<bits/stdc++.h>
            using namespace std;
            const int N=11;
            int n[N][N];
            int main(){
            	int qwert;
            	cin>>qwert;
            	int asdf=1;
            	for(int i=1;i<=qwert;i++)
            	{
            		int l=i;
            		int p=1;
            		while(l>=1)
            		{
            			if(i%2==0)
            			{
            				n[p][l]=asdf;
            			}
            			else
            			{
            				n[l][p]=asdf;
            			}
            			asdf++;
            			p++;
            			l--;			
            		}
            	}
            	for(int q=1;q<=qwert;q++)
            	{
            		for(int d=1;d<=qwert;d++)
            		{
            			if(n[q][d]==0)
            			{
            				continue;
            			}
            			cout<<n[q][d]<<" ";
            		}
            		cout<<endl;
            	}
            	return 0;
            }
            
            
            • -4
              @ 2024-10-26 11:22:10

              asasass

              • 1

              Information

              ID
              82
              Time
              1000ms
              Memory
              256MiB
              Difficulty
              4
              Tags
              (None)
              # Submissions
              81
              Accepted
              29
              Uploaded By