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 }
     
  • 相关阅读:
    运算符
    变量数据类型及其转换
    JAVA基础知识
    关于Eclipse及JDK安装过程中的一些问题
    python并发编程相关概念总结
    python网络编程01
    python网络编程
    python面向对象编程设计与开发
    python面向对象编程实例
    文件、函数、装饰器、迭代器实例
  • 原文地址:https://www.cnblogs.com/panweiwei/p/6284108.html
Copyright © 2011-2022 走看看