题目:托普利兹矩阵
问题描述
托普利兹矩阵(大小 nxn)满足主对角线上的元素均相等,平行于主对角线的线上的元
素也均相等,如下列矩阵所示。
1 25 36 9
5 1 25 36
6 5 1 25
6 6 5 1
因此,给定一个行向量和一个列向量(行、列向量首个元素相等),作为矩阵的首行和
首列,矩阵其他元素均与左上角的元素相等,这样构成的矩阵即为托普利兹矩阵。现要求,
编写程序,当输入一个行向量和一个列向量时,输出所构成的托普利兹矩阵。
输入格式
第一行输入一个行向量:H1 H2 H3 H4 H5 …… Hn
第二行输入一个列向量:C1 C2 C3 C4 C5 …… Cn
输出格式
输出一个托普利兹矩阵。
样例输入
1 25 36 9
1 5 6 6
样例输出
1 25 36 9
5 1 25 36
6 5 1 25
6 6 5 1
样例说明
n 为行、列向量元素个数;输入向量的元素以一个空格分隔,末尾无其他符号;H1==C1;
评测用例规模与约定
5 ≤ n ≤ 10;文章来源地址https://www.toymoban.com/news/detail-821380.html
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
//#include<iostream>
//using namespace std;
int main()
{
int arr[100][100] = { 0 };
char c = ' ';
int i = 0;
int n = 0;
//while (cin >> arr[0][i])
//{
// c = cin.get();
// if (c == '\n')
// {
// break;
// }
// i++; n = i + 1;
//}
//i = 0;
//while (cin >> arr[i][0])
//{
// c = cin.get();
// if (c == '\n')
// {
// break;
// }
// i++;
//}
while (1)
{
scanf("%d", &arr[0][i]);
char ch = '0';
scanf("%c", &ch);
if (ch == '\n')
{
break;
}
i++;
n = i + 1;
}
i = 0;
while (1)
{
scanf("%d", &arr[i][0]);
char ch = '0';
scanf("%c", &ch);
if (ch == '\n')
{
break;
}
i++;
n = i + 1;
}
//填充数列
for (int i = 1; i < n; i++)
{
for (int j = 1; j < n; j++)
{
arr[i][j] = arr[i - 1][j - 1];
}
}
//输出
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
printf("%d ", arr[i][j]);
}
printf("\n");
}
return 0;
}
文章来源:https://www.toymoban.com/news/detail-821380.html
到了这里,关于XDOJ483.托普利兹矩阵的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!