zoukankan      html  css  js  c++  java
  • C语言 · 9-1九宫格

    算法提高 9-1九宫格  
    时间限制:1.0s   内存限制:256.0MB
        
    问题描述
      九宫格。输入1-9这9个数字的一种任意排序,构成3*3二维数组。如果每行、每列以及对角线之和都相等,打印1。否则打印0。
    样例输出
    与上面的样例输入对应的输出。
    例:
    数据规模和约定
      输入1-9这9个数字的一种任意排序。
    方案一: 
     1 #include<stdio.h> 
     2 int main(){
     3     /*定义二维数组,并赋初值为0*/
     4     int a[3][3];
     5     /*录入A[m][s]*/
     6     for(int i=0;i<3;i++){
     7         for(int j=0;j<3;j++){
     8             scanf("%d",&a[i][j]);
     9         }
    10     }
    11 //    /*打印A[m][s]*/
    12 //    for(int i=0;i<3;i++){
    13 //        for(int j=0;j<3;j++){
    14 //            printf("%d ",a[i][j]);
    15 //        }
    16 //        printf("
    ");
    17 //    }
    18     int row1=0,row2=0,row3=0,pol1=0,pol2=0,pol3=0,Xie1=0,Xie2=0;
    19     row1 = a[0][0]+a[0][1]+a[0][2];
    20     row2 = a[1][0]+a[1][1]+a[1][2];
    21     row3 = a[2][0]+a[2][1]+a[2][2];
    22     
    23     pol1 = a[0][0]+a[1][0]+a[2][0];
    24     pol2 = a[0][1]+a[1][1]+a[2][1];
    25     pol3 = a[0][2]+a[1][2]+a[2][2];
    26     
    27     Xie1 = a[0][0]+a[1][1]+a[2][2];
    28     Xie2 = a[0][2]+a[1][1]+a[2][0];
    29 //    printf("%d, %d, %d, %d, %d, %d, %d, %d
    ",row1,row2,row3,pol1,pol2,pol3,Xie1,Xie2);
    30     for(int i=0;i<3;i++){
    31         if(row1 == row2 == row3 == pol1 == pol2 == pol3 == Xie1 == Xie2){
    32             printf("1");
    33             break;
    34         }else{
    35             printf("0");
    36             break;
    37         }
    38     }
    39 }


    方案二:

     1 #include<stdio.h> 
     2 int main(){
     3     int sum=0,k=0;
     4     int s[100]={0};//结果数组,并赋初值为0
     5     /*定义二维数组*/
     6     int a[3][3];
     7     int i,j;
     8     /*录入A[m][s]*/
     9     for(i=0;i<3;i++){
    10         sum=0;//每输入一行时sum置为0 
    11         for(j=0;j<3;j++){
    12             scanf("%d",&a[i][j]);
    13             sum = sum+a[i][j];
    14         }
    15         s[k++] = sum;//每行的和 ,这个比较好理解 
    16     }
    17     
    18     for(sum=0,i=0;i<3;i++){
    19         sum=0;
    20         for(j=0;j<3;j++){
    21             sum+=a[j][i];
    22         }
    23         s[k++] = sum;//每列的和 ,联想矩阵转置,也好理解 
    24     }
    25     
    26     for(sum=0,i=0;i<3;i++)
    27         sum+=a[i][i];
    28     s[k++] = sum;//主对角线元素和 
    29     
    30     s[k++] = a[0][2]+a[1][1]+a[2][0];//副对角线元素和 
    31     
    32     //类似于选择排序的遍历 
    33     bool flag=true; 
    34     for(i=0;i<k-1;i++){
    35         for(j=i+1;j<k;j++){
    36             if(s[i] != s[j]){
    37                 flag=false;//不相等则flag为假 
    38             }
    39         }
    40     }
    41     if(flag)//若flag真 
    42         printf("1");
    43     else
    44         printf("0");
    45     return 0;
    46 }
     
  • 相关阅读:
    Count and Say leetcode
    Find Minimum in Rotated Sorted Array II leetcode
    Find Minimum in Rotated Sorted Array leetcode
    Search in Rotated Sorted Array II leetcode
    search in rotated sorted array leetcode
    Substring with Concatenation of All Words
    Subsets 子集系列问题 leetcode
    Sudoku Solver Backtracking
    Valid Sudoku leetcode
    《如何求解问题》-现代启发式方法
  • 原文地址:https://www.cnblogs.com/panweiwei/p/6284108.html
Copyright © 2011-2022 走看看