1. 程式人生 > >百練noi21:二維陣列右上左下遍歷,24:蛇形填充陣列

百練noi21:二維陣列右上左下遍歷,24:蛇形填充陣列

21:二維陣列右上左下遍歷

總時間限制: 
1000ms 
記憶體限制: 
65536kB
描述

給定一個row行col列的整數陣列array,要求從array[0][0]元素開始,按從左上到右下的對角線順序遍歷整個陣列。


輸入
輸入的第一行上有兩個整數,依次為row和col。
餘下有row行,每行包含col個整數,構成一個二維整數陣列。
(注:輸入的row和col保證0 < row < 100, 0 < col < 100)
輸出
按遍歷順序輸出每個整數。每個整數佔一行。
樣例輸入
3 4
1 2 4 7
3 5 8 10
6 9 11 12
樣例輸出
1
2
3
4
5
6
7
8
9
10
11
12
  • 檢視 
  • 提交 
  • 統計 
  • 提問
    • 程式碼:
    #include<iostream>
    using namespace std;
    int main(){
    	int n,m,i,j,a[100][100];
    	cin>>n>>m;
    	for(i=0;i<n;i++)
    		for(j=0;j<m;j++)
    			cin>>a[i][j];
    	for(i=0;i<=n+m-2;i++){
    		for(j=i;j>=0;j--){
    			if(j<m&&i-j<n){
    				cout<<a[i-j][j]<<endl;
    			}
    				
    		}	
    	}
    		
    }

    24:蛇形填充陣列

    總時間限制: 
    1000ms 
    記憶體限制: 
    65536kB
    描述

    用數字1,2,3,4,...,n*n這n2個數蛇形填充規模為n*n的方陣。

    蛇形填充方法為:

    對於每一條左下-右上的斜線,從左上到右下依次編號1,2,...,2n-1;按編號從小到大的順序,將數字從小到大填入各條斜線,其中編號為奇數的從左下向右上填寫,編號為偶數的從右上到左下填寫。

    比如n=4時,方陣填充為如下形式:

    1  2  6  7
    3  5  8  13
    4  9  12 14
    10 11 15 16
    
    輸入
    輸入一個不大於10的正整數n,表示方陣的行數。
    輸出
    輸出該方陣,相鄰兩個元素之間用單個空格間隔。
    樣例輸入
    4
    樣例輸出
    1 2 6 7
    3 5 8 13
    4 9 12 14
    10 11 15 16
    • 檢視 
    • 提交 
    • 統計 
    • 提問
      • 程式碼:
      #include<cstdio>
      int main(){
         int n,i,j,t=1;
         int a[100][100]={0};
         scanf("%d",&n);
         for(i=0;i<=2*n-2;i++){
             for(j=i;j>=0;j--){
      
                 if(j<n&i-j<n){
                     if(i%2!=0)
                         a[i-j][j]=t++;
                     else
                         a[j][i-j]=t++;
                 }
             }
         }
         for(i=0;i<n;i++){
             for(j=0;j<n;j++)
              printf("%d ",a[i][j]);
             printf("\n");
         }
         return 0;
      }