IOS面接アルゴリズム問題(4)——逆斜め対角線印刷マトリクス


今日は逆斜め対角線印刷マトリクスの2つをご紹介します
//
//  main.c
//          
//
//  Created by cuixuerui on 15/12/19.
//  Copyright (c) 2015  cuixuerui. All rights reserved.
//

#include <stdio.h>

/*
   M N    ,        (    )        。(******)
 
 0	1	2	3
 4	5	6	7
 8	9	10	11
 
       0 1 4 2 5 8 3 6 9 7 10 11
 
 */

int main(int argc, const char * argv[]) {
    
    int m,n;
    scanf("%d%d",&m,&n);
    int a[m][n];
    int count=0;
    for (int i=0; i<m; i++) {
        for (int j=0; j<n; j++) {
            a[i][j]=count++;
            printf("%d ",a[i][j]);
        }
        printf("
"); } /* :a[0][0].................... i+j=0 :a[0][1] a[1][0]............ i+j=1 :a[0][2] a[1][1] a[2][0].... i+j=2 :a[0][3] a[1][2] a[2][1].... i+j=3 :a[1][3] a[2][2]............ i+j=4 :a[2][3].................... i+j=5 */ int num=0; ///////////////// //////////////// printf("***** *****
"); int low=0; //i while (num<(m+n-1)) {//i+j=5,3*4 6 if(num>=n){ // i +1 low++; } for (int i=low;i<m; i++) { printf("%d ",a[i][num-i]); if (num==i) { // 0 , 。 break; } } printf("
");// num++; } ///////////////// ( )//////////////// // , printf("***** ( )*****
"); int k=0; while (k<(m+n-1)) { for (int i=0; i<m; i++) { for (int j=0; j<n; j++) { if (i+j==k) { printf("%d ",a[i][j]); } } } k++; printf("
"); } }