第14周 oj平台汇总

Problem A: 求矩阵对角线元素之和

Description

在数学中,矩阵(Matrix)是指纵横排列的二维数据表格,最早来自于方程组的系数及常数所构成的方阵。矩阵是高等代数学中的常见工具,也常见于统计分析等应用数学学科中。在物理学中,矩阵于电路学、力学、光学和量子物理中都有应用;计算机科学中,计机图形学、三维动画制作也需要用到矩阵。 矩阵的运算是数值分析领域的重要问题。介绍矩阵理论的线性代数课程是工程专业学生的必修科目。
用程序设计的方法解决矩阵问题,最简单的就是将矩阵用二维数组存储和处理。
下面,我们将矩阵对角线元素加起来。

Input

一个整数n,代表接下来的要输入n行n列的数据,作为矩阵中的元素。(1<n<15)
n行n列的整数值。

Output

主对角线(多左上到右下)和副对角线(由右上到左下)元素和,两数中间用空格隔开。

Sample Input

3
1 2 3
1 1 1
3 2 1

Sample Output

3 7

代码:

#include <iostream>
using namespace std;
int main()
{
    int n,d;
    cin>>n;
    int a[n][n];
    int i=0,j=0;
    for(i=0; i<n; i++)
    {
        for(j=0; j<n; j++)
            cin>>a[i][j];
    }
    int e=0;
    i=0;
    while (i<n)
    {
        e+=a[i][i];
        i++;
    }
    cout<<e<<" ";
    i=0,j=0,e=0,d=n-1;
    while (i<n)
    {
        e+=a[i][d];
        i++;
        d--;
    }
    cout<<e;
    return 0;
}

运行结果:

Problem B: 国家排序

Description

世界格局动荡不安,10国紧急召开会议磋商对策。有些国家斤斤计较,参会代表的座位如何排定争个不停。现在给他们按字典序排列,赶紧商议正事。请编写程序,为这10国的代表排好顺序。

Input

10个国家的名字,一个国家一行

Output

排好序的国家名,一个国家一行

Sample Input

Ireland
Poland
Germany
France
Norway
Korea
Malaysia
Thailand
China
Brazil

Sample Output

Brazil
China
France
Germany
Ireland
Korea
Malaysia
Norway
Poland
Thailand

代码:

#include <iostream>
using namespace std;
#include <cstring>
int main()
{
    string a[10],t;
    int i=0,j=0;
    while (i<10)
        cin>>a[i++];
    for(j=0; j<10; j++)
        for (i=0; i<9; i++)
        {
            if (a[i]>a[i+1])
            {
                t=a[i];
                a[i]=a[i+1];
                a[i+1]=t;
            }
        }
    i=0;
    while(i<10)
        cout<<a[i++]<<'\n';
    return 0;
}

运行结果:

Problem C: 杨辉三角形

Description

1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
上面的图形熟悉吗?这是大名鼎鼎的杨辉三角。
杨辉三角可不只是数学游戏,在实际应用中有大用。例如两个未知数x、y之和的n次方的系数问题,(x+y)^1=x+y,系数为1, 1,(x+y)^2=x^2+2xy+y^2,系数是1,2,1,立方、四次方,你可以继续下去,这不就是杨辉三角的各行吗?
所以,生成了杨辉三解,解决的就是多项式展开问题。而多项式,解决的实际问题更广了。

Input

一个正整数n(1<n<30)

Output

输出相应层数的杨辉三角,每一层的整数之间用一个空格隔开。注意每一层最后一个数后面没有空格。

Sample Input

6

Sample Output

1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1

HINT

用二维数组存储杨辉三角(实际只用左下部分)。于是可以采用下面的思路完成:

#include <iostream>

using namespace std;


int main()

{

int a[30][30],n;

cin>>n;

//使n行第1列和对角的元素均为1


//从第3行开始,按规律求和


//输出结果

return 0;

}

代码:
#include <iostream>
using namespace std;
int main()
{
    int a[30][30],n;
    cin>>n;
    int i=0,j=1,t;
    while(i<n)
    {
        a[i][i]=1;
        a[i][0]=1;
        i++;
    }
    i=2;
    while(i<n)
    {
        while (j<i)
        {
             t=a[i-1][j-1]+a[i-1][j];
             a[i][j]=t;
             j++;
        }
    j=1;
     i++;
    }
    i=0;j=0;
    while(i<n)
    {
        while(j<i)
        {
           cout<<a[i][j]<<" ";
           j++;
        }

        cout<<a[i][j]<<'\n';
        j=0;
        i++;
    }
//输出结果
    return 0;
}

运行结果:




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值