zoukankan      html  css  js  c++  java
  • ACM_三角形蛇形矩阵

    三角形蛇形矩阵

    Time Limit: 2000/1000ms (Java/Others)

    Problem Description:

    小铠觉得各类题型是要温故而知新的,所以他叫小发出一道类似做过的题。其实,一开始小发是拒绝的,但后来想了想,出些能坑别人的题也是人生的一大乐趣,何乐而不为。小发回顾了做过的题,灵机一闪,出了道三角形的蛇形矩阵。

    Input:

    输入包含多组测试数据,首先输入n(1<n<=20),代表n*n的三角形矩阵。

    Output:

    当n为奇数时,从1开始顺时针方向填入递增数据,并且在左下角输出三角形斜边的值之和m;当n为偶数时,从1开始逆时针方向填入递增数据,并且在右上角输出三角形斜边的值之和m。(注意数据间的空格和m的位置)
    注意最后一个数字依然有空格,规则是数字加空格位数为4位,具体参考样例。

    Sample Input:

    4
    5

    Sample Output:

    1           26
    2   8   
    3   9   10  
    4   5   6   7   
    1   2   3   4   5   
        10  11  12  6   
            15  13  7   
                14  8   
    49              9
    解题思路:水题!一直卡PE,最后发现原来当n为偶数时,除了右上角那个值后面不能有空格之外,其它情况每行输出的最后一个数字+空格共占4位,即最后一个数字的位数如果小于4,则后面需带(4-最后一个数字的位数)个空格。
    AC代码:
     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 int main(){
     4     int n,m,i,j,border,a[25][25];
     5     while(~scanf("%d",&n)){
     6         memset(a,0,sizeof(a));m=1;//a数组清0
     7         if(n%2){//奇数
     8             for(int k=1;k<=(n+1)/2;++k){
     9                 i=j=k;border=n-k+1;
    10                 while(j<=border){a[i][j]=m++;j++;}
    11                 i++;j--;
    12                 while(i<=border){a[i][j]=m++;i++;}
    13             }
    14             for(int k=1;k<=n;++k)a[n][1]+=a[k][k];
    15             for(int k=1;k<=n;k++){
    16                 for(int g=1;g<=n;++g){
    17                     if(a[k][g]==0)printf("    ");
    18                     else printf("%-4d",a[k][g]);
    19                 }
    20                 printf("
    ");
    21             }
    22         }
    23         else{//偶数
    24             for(int k=1;k<=n/2;++k){
    25                 i=j=k;border=n-k+1;
    26                 while(i<=border){a[i][j]=m++;i++;}
    27                 i--;j++;
    28                 while(j<=border){a[i][j]=m++;j++;}
    29             }
    30             for(int k=1;k<=n;++k)a[1][n]+=a[k][k];
    31             for(int g=1;g<=n;++g){
    32                 if(a[1][g]==0)printf("    ");
    33                 else{
    34                     if(g!=n)printf("%-4d",a[1][g]);
    35                     else printf("%d
    ",a[1][g]);//n为偶数的时候右上角这个值后面不能有空格
    36                 }
    37             }
    38             for(int k=2;k<=n;k++){
    39                 for(int g=1;g<=k;++g)
    40                     printf("%-4d",a[k][g]);//其余每行最后一个数字+空格共占4位
    41                 printf("
    ");
    42             }
    43         }
    44     }
    45     return 0;
    46 }
  • 相关阅读:
    技术人员如何创业《四》- 打造超强执行力团队(转载)
    技术人员如何创业《一》—— 产品及想法(转载)
    一页纸商业计划书 (Business Plan) 模板(转载)
    公司项目架构的演变过程
    腾讯云CentOS 6.6安装 Nginx
    创业公司一年工作总结
    启动tomcat时 错误: 代理抛出异常 : java.rmi.server.ExportException: Port already in use: 1099的解决办法
    windows下使用批处理脚本实现多个版本的JDK切换
    Java后端WebSocket的Tomcat实现
    微信开发学习总结(三)——开发微信公众号的最基本功能——普通消息的接收和回复
  • 原文地址:https://www.cnblogs.com/acgoto/p/9223050.html
Copyright © 2011-2022 走看看