1. 题目描述------BC106 上三角矩阵判定
描述
KiKi想知道一个n阶方矩是否为上三角矩阵,请帮他编程判定。上三角矩阵即主对角线以下的元素都为0的矩阵,主对角线为从矩阵的左上角至右下角的连线。
示例
输入:
3
1 2 3
0 4 5
0 0 6
输出:YES
2. 思路
3. 代码实现
c
#include<stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
int i = 0,j = 0;
int arr[10][10] = { 0 };
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
scanf("%d", &arr[i][j]);
}
}
int k = 0;
int t = 0;
int flag = 1;
for (k = 0; k < n; k++)
{
for (t = 0; t < k; t++)
{
if (arr[k][t] != 0)
{
flag = 0;
}
}
}
if (flag == 1)
{
printf("YES\n");
}
else
{
printf("NO\n");
}
return 0;
4. 代码实现2
这个加入了goto 语句,因为如果我们已经判断不等于0,就不需要判断剩余的了
c
#include<stdio.h>
int main() {
int n = 0;
scanf("%d", &n);
int i = 0, j = 0;
int arr[10][10] = { 0 };
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
scanf("%d", &arr[i][j]);
}
}
int k = 0;
int t = 0;
int flag = 1;
for (k = 0; k < n; k++) {
for (t = 0; t < k; t++) {
if (arr[k][t] != 0) {
flag = 0;
goto end;
}
}
}
end:
if (flag == 1) {
printf("YES\n");
} else {
printf("NO\n");
}
return 0;
}
5.代码实现3
我们也可以不使用goto,当判断我们有值不等于0的时候,直接打印NO,然后return。
c
#include<stdio.h>
int main() {
int n = 0;
scanf("%d", &n);
int i = 0, j = 0;
int arr[10][10] = { 0 };
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
scanf("%d", &arr[i][j]);
}
}
int k = 0;
int t = 0;
for (k = 0; k < n; k++) {
for (t = 0; t < k; t++) {
if (arr[k][t] != 0) {
printf("NO\n");
return 0;
}
}
}
printf("YES\n");
return 0;
}
6. 代码实现4,其实并不需要再创建两个循环变量,都使用i和j是没问题的,因为我们会给i,j重新赋值为0
c
#include<stdio.h>
int main() {
int n = 0;
scanf("%d", &n);
int i = 0, j = 0;
int arr[10][10] = { 0 };
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
scanf("%d", &arr[i][j]);
}
}
for (i = 0; i < n; i++) {
for (j = 0; j < i; j++) {
if (arr[i][j] != 0) {
printf("NO\n");
return 0;
}
}
}
printf("YES\n");
return 0;
}