pta 又来一个上三角数字三角形

一道简单题,可是,因为格式错误的原因,我居然花了半个小时的时间!

题目:

输入一个正整数n,输出具有n层的上三角数字三角形。

输入格式:

只有一个正整数n,1<=n<=100。

输出格式:

一个上三角数字三角形,每个数字占四个字符位置。

输入样例:

5

输出样例:

1   6  10  13  15

2   7  11  14

3   8  12

4   9

5

一开始我的代码是这个样子的:

#include <stdio.h>
int main()
{
int n,i,j,k=1,a[100][100]={0};
scanf("%d",&n);

for(i=0;i<n;i++)
{
int s=n;
for(j=0;j<n-i;j++)
{
if(j==0)
{
a[i][0]=k;
k++;
}
if(j>0)
{
a[i][j]=a[i][j-1]+s+1;
}
s--;
}

}
for(i=0;i<n;i++)
{
for(j=0;j<n-i;j++)
{
if(j==(n-i-1)){
printf("%d",a[i][j]);
}
else
{
if(a[i][j]>9)
{
printf("%d  ",a[i][j]);
}
else if(a[i][j]>99)
{
printf("%d ",a[i][j]);
}
else if(a[i][j]>999)
{
printf("%d",a[i][j]);
}
else
{
printf("%d    ",a[i][j]);
}
}
}

printf("\n");
}
 return 0;
}

通过仔细阅读题目可以知道,空格出现在数字之前,但是我初步做的是在数字之后,格式错误,而且这样分类容易少列举出现的情况,也会造成资源的浪费。

所以,改良了代码:

int main()
{
    int n,i,j,k=1,a[200][200]={0};
    scanf("%d",&n);

    for(i=0;i<n;i++)
    {
        int s=n;
        for(j=0;j<n-i;j++)
        {
            if(j==0)
            {
                a[i][0]=k;
                k++;
            }
            if(j>0)
            {
                a[i][j]=a[i][j-1]+s+1;
            }
        s--;
        }

        }
    for(i=0;i<n;i++)
    {
        for(j=0;j<n-i;j++)
        {
            printf("%4d",a[i][j]);        

            }
        printf("\n");
    }
     return 0;
}

题目上说的是“每个数字占四个字符位置”,所以可以直接这样输出:

 printf("%4d",a[i][j]);  

用了C++的方法做,进一步简化:

#include <iostream>
#include <cstdio>
using namespace std;

int a[105][105];

int main(){
    int n;
    scanf("%d", &n);
    int sum = 0;
    for (int i = 1 ; i <= n ; i++){
        for (int j = 1 ; j <= n + 1 - i ; j++){
            sum++;
            a[j][i] = sum;
        }
    }

    for (int i = 1 ; i <= n ; i++){
        for (int j = 1 ; j <= n + 1 - i ; j++){
            printf("%4d",a[i][j]);
        }
        printf("\n");
    }
    return 0;
}

这两个AC了的代码,主要区别是,前者是按行输出,后者是按列输出,这道题目,按列输出会更方便简单。

这是这次的做题心得。

原文地址:https://www.cnblogs.com/dearzy35/p/10051221.html

时间: 2024-11-03 01:36:52

pta 又来一个上三角数字三角形的相关文章

『嗨威说』算法设计与分析 - PTA 数字三角形 / 最大子段和 / 编辑距离问题(第三章上机实践报告)

本文索引目录: 一.PTA实验报告题1 : 数字三角形 1.1 实践题目 1.2 问题描述 1.3 算法描述 1.4 算法时间及空间复杂度分析 二.PTA实验报告题2 : 最大子段和 2.1 实践题目 2.2 问题描述 2.3 算法描述 2.4 算法时间及空间复杂度分析 三.PTA实验报告题3 : 编辑距离问题 3.1 实践题目 3.2 问题描述 3.3 算法描述 3.4 算法时间及空间复杂度分析 四.实验心得体会(实践收获及疑惑) 一.PTA实验报告题1 : 数字三角形 1.1 实践题目: 1

#1037 : 数字三角形

#1037 : 数字三角形 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 问题描写叙述 小Hi和小Ho在经历了螃蟹先生的任务之后被奖励了一次出国旅游的机会,于是他们来到了大洋彼岸的美国. 美国人民的生活很有意思,常常会有形形色色.奇奇怪怪的活动举办,这不.小Hi和小Ho刚刚下飞机,就赶上了当地的迷宫节活动.迷宫节里展览出来的迷宫都特别的有意思,可是小Ho却相中了一个事实上并不怎么像迷宫的迷宫--由于这个迷宫的奖励很丰富~ 于是小Ho找到了小Hi,让小Hi帮助他获取尽可能

1037 数字三角形 (dp算法解决)

#1037 : 数字三角形 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 问题描述 小Hi和小Ho在经历了螃蟹先生的任务之后被奖励了一次出国旅游的机会,于是他们来到了大洋彼岸的美国.美国人民的生活非常有意思,经常会有形形色色.奇奇怪怪的活动举办,这不,小Hi和小Ho刚刚下飞机,就赶上了当地的迷宫节活动.迷宫节里展览出来的迷宫都特别的有意思,但是小Ho却相中了一个其实并不怎么像迷宫的迷宫——因为这个迷宫的奖励非常丰富~ 于是小Ho找到了小Hi,让小Hi帮助他获取尽可能多的

数字三角形-poj

题目要求: 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 在上面的数字三角形中寻找在上面的数字三角形中寻找一条从顶部到底边的路径,使得路径上所经过的数字之和最大.路径上的每一步都只能往左下或右下走.只需要求出这个最大和即可,不必给出具体路径.  三角形的行数大于1小于等于100,数字为 0 - 99 输入格式: 5 //三角形行数.下面是三角形 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 解题思路: 用二维数组存放数字三角形 D[r][j] //表示第i行第j个元素

hiho#1037 : 数字三角形 (动态规划)

#1037 : 数字三角形 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 问题描述 小Hi和小Ho在经历了螃蟹先生的任务之后被奖励了一次出国旅游的机会,于是他们来到了大洋彼岸的美国.美国人民的生活非常有意思,经常会有形形色色.奇奇怪怪的活动举办,这不,小Hi和小Ho刚刚下飞机,就赶上了当地的迷宫节活动.迷宫节里展览出来的迷宫都特别的有意思,但是小Ho却相中了一个其实并不怎么像迷宫的迷宫--因为这个迷宫的奖励非常丰富~ 于是小Ho找到了小Hi,让小Hi帮助他获取尽可能多的

动态规划 数字三角形(递归,递推,记忆化搜索)

题目要求: 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 在上面的数字三角形中寻找在上面的数字三角形中寻找一条从顶部到底边的路径,使得路径上所经过的数字之和最大.路径上的每一步都只能往左下或右下走.只需要求出这个最大和即可,不必给出具体路径. 三角形的行数大于1小于等于100,数字为 0 - 99 输入格式: 5 //三角形行数.下面是三角形 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 解题思路: 用二维数组存放数字三角形 D[r][j] //表示第i行第j个元素的

hihoCoder#1037 : 数字三角形(DP)

[题目链接]:click here~~ 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 问题描写叙述 小Hi和小Ho在经历了螃蟹先生的任务之后被奖励了一次出国旅游的机会,于是他们来到了大洋彼岸的美国.美国人民的生活很有意思,常常会有形形色色.奇奇怪怪的活动举办.这不,小Hi和小Ho刚刚下飞机,就赶上了当地的迷宫节活动. 迷宫节里展览出来的迷宫都特别的有意思.可是小Ho却相中了一个事实上并不怎么像迷宫的迷宫--由于这个迷宫的奖励很丰富~ 于是小Ho找到了小Hi,让小Hi帮助

动态规划入门-数字三角形(从朴素递归到各种优化)

数字三角形(POJ1163) Description 73 88 1 02 7 4 44 5 2 6 5 在上面的数字三角形中寻找一条从顶部到底边的路径,使得路径上所经过的数字之和最大.路径上的每一步都只能往左下或右下走.只需要求出这个最大和即可,不必给出具体路径.三角形的行数大于1小于等于100,数字为 0 - 99 输入格式:5 //三角形行数.下面是三角形73 88 1 02 7 4 4 4 5 2 6 5 要求输出最大和 Sample Output 30 Source IOI 1994

hihoCoder - 1037 - 数字三角形 (动态规划)

#1037 : 数字三角形 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 问题描述 小Hi和小Ho在经历了螃蟹先生的任务之后被奖励了一次出国旅游的机会,于是他们来到了大洋彼岸的美国.美国人民的生活非常有意思,经常会有形形色色.奇奇怪怪的活动举办,这不,小Hi和小Ho刚刚下飞机,就赶上了当地的迷宫节活动.迷宫节里展览出来的迷宫都特别的有意思,但是小Ho却相中了一个其实并不怎么像迷宫的迷宫--因为这个迷宫的奖励非常丰富~ 于是小Ho找到了小Hi,让小Hi帮助他获取尽可能多的