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代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,m,i,j,border,a[][];
while(~scanf("%d",&n)){
memset(a,,sizeof(a));m=;//a数组清0
if(n%){//奇数
for(int k=;k<=(n+)/;++k){
i=j=k;border=n-k+;
while(j<=border){a[i][j]=m++;j++;}
i++;j--;
while(i<=border){a[i][j]=m++;i++;}
}
for(int k=;k<=n;++k)a[n][]+=a[k][k];
for(int k=;k<=n;k++){
for(int g=;g<=n;++g){
if(a[k][g]==)printf(" ");
else printf("%-4d",a[k][g]);
}
printf("\n");
}
}
else{//偶数
for(int k=;k<=n/;++k){
i=j=k;border=n-k+;
while(i<=border){a[i][j]=m++;i++;}
i--;j++;
while(j<=border){a[i][j]=m++;j++;}
}
for(int k=;k<=n;++k)a[][n]+=a[k][k];
for(int g=;g<=n;++g){
if(a[][g]==)printf(" ");
else{
if(g!=n)printf("%-4d",a[][g]);
else printf("%d\n",a[][g]);//n为偶数的时候右上角这个值后面不能有空格
}
}
for(int k=;k<=n;k++){
for(int g=;g<=k;++g)
printf("%-4d",a[k][g]);//其余每行最后一个数字+空格共占4位
printf("\n");
}
}
}
return ;
}
ACM_三角形蛇形矩阵的更多相关文章
- ACM_蛇形矩阵
蛇行矩阵 Time Limit: 4000/2000ms (Java/Others) Problem Description: 蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形. Input: ...
- js实现蛇形矩阵
参加腾讯前端实习生笔试,真的是被虐了千百遍,除了一条js程序题,其他半点前端都没有,都是考算法,计算机原理,数据结构.下面贴上腾讯笔试最后三大条中的一条,实现一个蛇形矩阵的输出.蛇形矩阵的什么样这里我 ...
- 【面试】输出"蛇形"矩阵
一.题目描述 腾讯实习在线笔试的一道题目. 根据输入的数字(< 1000),输出这样的"蛇形"矩阵,如下.输入n,输出(n * n)阶矩阵,满足由外到内依次增大. 如: 输入 ...
- c++实现蛇形矩阵总结
蛇形矩阵,百度了一下,是这么一个东西: 像一条蛇一样依次递增. 我想,竟然做了螺旋矩阵,那做一下这个吧.在之前的螺旋矩阵的main函数基础上,写个函数接口就行了,这一次做的很快,但是这个矩阵感觉比螺旋 ...
- wikioi 1160 蛇形矩阵
/*======================================================================== 1160 蛇形矩阵 题目描述 Descriptio ...
- EOJ3536 求蛇形矩阵每一行的和---找规律
题目链接: https://acm.ecnu.edu.cn/problem/3536/ 题目大意: 求蛇形矩阵的每一行的和,数据范围n<=200000. 思路: 由于n数据较大,所以感觉应该是需 ...
- Java编码 蛇形矩阵的构建与遍历输出
一.蛇形矩阵的构建,并按行输出 例: 输入:n, 生成n*n的蛇形矩阵 1 2 3 8 9 4 7 6 5 输出:1 2 3 8 9 4 7 6 5 java编码 public static void ...
- c++打印蛇形矩阵
一个m*n的矩阵里按照下图形式填充,最后形成的矩阵即为蛇形矩阵,下图是m=4, n =5时的蛇形矩阵: 方法一:逐层循环 #include <iostream> using namespa ...
- EOJ 3.30 B. 蛇形矩阵【找规律/待补】
[链接]:https://acm.ecnu.edu.cn/contest/59/problem/B/ B. 蛇形矩阵 Time limit per test: 2.0 seconds Memory l ...
随机推荐
- java 十五周总结
- Python运算符(Python学习笔记03)
- SecureCRT 8.0设置与使用
1.设置回看缓冲信息的行数:
- #if 0的意义和好处
在调试中经常遇到,写好的程序,需要调试相反的两方面,如:有两款单片机的程序,分别对应着不同的硬件引脚,我们把代码都写上了,但是不能同时让他们起效,通常的办法是/**/屏蔽一些段落,但是调试起来很麻烦. ...
- List lambda 排序
Comparator<PromotionRule> comparator = Comparator.comparing(PromotionRule::getCreatedTime); pr ...
- Spring Tool Suite 安装
第一步:到http://spring.io/tools/sts/all/上下载对应版本.(此处以博主Windows64位系统为例) 第二步: 进入eclipse,依次点击help-->Insta ...
- java多线程synchronized volatile解析
先简单说说原子性:具有原子性的操作被称为原子操作.原子操作在操作完毕之前不会线程调度器中断.即一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行.在Java中,对除了l ...
- HDU 1210
感觉就是乱搞找规律 自己写几组数据 本来开始是想着把 n 个数字每次回到原来位置各需要多少次,然后取它们的最小公倍数就好了 但是数据写着写着发现每一个数回到原来位置次数都是一样的,那么就简单了,直接第 ...
- BZOJ5089: 最大连续子段和
维护一个序列支持以下操作:区间加,区间求最大子段和.n<=50000,m<=50000. 我TM再也不写分块了... 先分块,对于块整体加的操作,假设块里面有若干二元组(x,y),表示一个 ...
- iptables中增加/删除/查询/修改的基本操作
虽然在Ubuntu使用了UFW来简化iptables的操作,但是UFW只针对防火墙方面,转发方面没有涉及,所以要弄懂其中的原理,还是必须回归到iptables中.CentOS也是如此.下面是针对ipt ...