「牛客网C」初学者入门训练BC134,​BC136​

简介: 题目:BC134 蛇形矩阵难度:中等描述:给你一个整数n,输出n∗n的蛇形矩阵。输入描述:输入一行,包含一个整数n输出描述:输出n行,每行包含n个正整数,通过空格分隔。1<=n<=1000示例1

🚀🚀🚀大家觉不错的话,就恳求大家点点关注,点点小爱心,指点指点🚀🚀🚀

 

题目:BC134 蛇形矩阵

难度:中等

描述:

给你一个整数n,输出n∗n的蛇形矩阵

输入描述:

输入一行,包含一个整数n

输出描述:

输出n行,每行包含n个正整数,通过空格分隔。

1<=n<=1000

示例1

输入:

4

输出:

1 2 6 7

3 5 8 13

4 9 12 14

10 11 15 16

解题思路:所以,我用pos变量表示方向,其中1代表右上与右,-1代表左下与下.

运动情况分为6种:

碰到上边界(即i等于1且j小于n): 列增加1,行不变--------往右移动一格

碰到左边界(即j等于1 且 i小于n): 行增加1,列不变--------往下移动一格

碰到右边界(即j等于n): 行增加1,列不变--------往下移动一格

碰到下边界(即i等于n): 列增加1,行不变--------往右移动一格

以上四种是在边界上面移动.只有向右 和 向下

除去上面四种的边界情况,就是在边界中间的左下移动

除去上面四种的边界情况,就是在边界中间的右上移动

最后两种是在边界内移动 只有右上和左下

1. #include<stdio.h>
2. int main()
3. {
4. int n=0;
5. printf("请输入矩阵的阶数\n");
6. scanf("%d",&n);
7. int arr[n+2][n+2];//虽然定义了一个,n+2阶的矩阵,但是我们只需要n阶矩阵
8. for(int i=0;i<n+2;i++)
9.     {
10. for(int j=0;j<n+2;j++)
11.         {
12.             arr[i][j]=0;
13.         }
14.     }
15.     arr[1][1]=1;
16. int k=0;
17. int i=1,j=1,pos=1;
18. for(k=2;k<=n*n;k++)
19.     {
20. if(i==1&&j<n&&pos==1)//上边界,行不变,列增加一
21.         {
22.             arr[i][++j]=k;
23.             pos=-1;
24.         }
25. else if(j==1&&i<n&&pos==-1)//左边界,列不变,行增加一
26.         {
27.             arr[++i][j]=k;
28.             pos=1;
29.         }
30. else if(j==n&&pos==1)//右边界,行加一,列不变
31.         {
32.             arr[++i][j]=k;
33.             pos=-1;
34.         }
35. else if(i==n&&pos==-1)//下边界,行不变,列加一
36.         {
37.             arr[i][++j]=k;
38.             pos=1;
39.         }
40. else if(pos==1)//右上
41.         {
42.             arr[--i][++j]=k;
43.         }
44. else if(pos==-1)//左下
45.         {
46.             arr[++i][--j]=k;
47.         }
48.     }
49. for(i=1;i<=n;i++)
50.     {
51. for(j=1;j<=n;j++)
52.         {
53. printf("%-4d",arr[i][j]);
54.         }
55. printf("\n");
56.     }
57. }

BC136 KiKi判断上三角矩阵

难度:中等

描述:

KiKi想知道一个n阶方矩是否为上三角矩阵,请帮他编程判定。上三角矩阵即主对角线以下的元素都为0的矩阵,主对角线为从矩阵的左上角至右下角的连线。

输入描述:

第一行包含一个整数n,表示一个方阵包含n行n列,用空格分隔。 (2≤n≤10)

从2到n+1行,每行输入n个整数(范围-231~231-1),用空格分隔,共输入n*n个数。

输出描述:

一行,如果输入方阵是上三角矩阵输出"YES"并换行,否则输出"NO"并换行。

示例1

输入:

3

1 2 3

0 4 5

0 0 6

输出:

YES

示例2

输入:

4

1 2 3 4

5 6 7 8

9 0 11 12

13 0 0 16

输出:

NO

解题思路:我们可以判断它主对角线下面的元素是否为0,第一行,判断0个元素,第二行判断两个元素,第三行判断三个元素...第n行判断n-1个元素。

1. #include<stdio.h>
2. int main()
3. {
4. int n=0;
5. printf("亲输入输入方阵边长\n");
6. scanf("%d",&n);
7. int arr[n][n];
8. int i=0,j=0;
9. int count=0;
10. printf("请输入矩阵\n");
11. for( i=0;i<n;i++)
12.     {
13. for( j=0;j<n;j++)
14.         {
15. scanf("%d",&arr[i][j]);
16.         }
17.     }
18. for( i=1;i<n;i++)
19.     {
20. for( j=0;j<i;j++)
21.         {
22. if(arr[i][j]!=0)
23.             {
24. printf("NO\n");
25.                 count=1;
26. goto agin;
27.             }
28.         }
29.     }
30.     agin:
31. if(count==0)
32.     {
33. printf("YES\n");
34.     }
35. return 0;
36. }

这里用到了,goto语句,如果判断它有一个元素不是0,就直接跳出两重循环,这样减少了,循环次数。

🌸🌸🌸如果大家还有不懂或者建议都可以发在评论区,我们共同探讨,共同学习,共同进步。谢谢大家! 🌸🌸🌸



相关文章
|
29天前
|
JavaScript
《进阶篇第9章》学习vuex知识点后练习:把求和案例改成mapMutations与mapActions
《进阶篇第9章》学习vuex知识点后练习:把求和案例改成mapMutations与mapActions
9 0
|
Java 机器人 数据安全/隐私保护
蓝桥杯历届真题题目+解析+代码+答案(2013-2020)(JavaA、B、C组)(C++语言)(Python)
蓝桥杯历届真题题目+解析+代码+答案(2013-2020)(JavaA、B、C组)(C++语言)(Python)
330 0
|
算法 安全 数据安全/隐私保护
​电量计基础知识介绍:
​电量计基础知识介绍:
236 0
|
编译器 C语言 C++
C++入门(一)(上)
C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的程序,需要高度 的抽象和建模时,C语言则不合适。为了解决软件危机, 20世纪80年代, 计算机界提出了OOP(object oriented programming:面向对象)思想,支持面向对象的程序设计语言应运而生。
97 0
C++入门(一)(上)
|
网络协议 安全 算法
大网进阶安全刷题讲解(带答案)(1)(下)
大网进阶安全刷题讲解(带答案)(1)
102 0
|
网络协议 安全 算法
大网进阶安全刷题讲解(带答案)(1)(上)
大网进阶安全刷题讲解(带答案)(1)
87 0
「牛客网C」初学者入门训练BC139,BC158
题目:BC139矩阵交换 难度:中等 输入描述: 第一行包含两个整数n和m,表示一个矩阵包含n行m列,用空格分隔。 (1≤n≤10,1≤m≤10)从2到n+1行,每行输入m个整数(范围-231~231-1),用空格分隔,共输入n*m个数,表示第一个矩阵中的元素。接下来一行输入k,表示要执行k次操作(1≤k≤5)。接下来有k行,每行包括一个字符t和两个数a和b,中间用空格格分隔,t代表需要执行的操作,当t为字符'r'时代表进行行变换,当t为字符'c'时代表进行列变换,a和b为需要互换的行或列(1≤a≤b≤n≤10,1≤a≤b≤m≤10)。 提示:当t为别的字符时不需要处理
「牛客网C」初学者入门训练BC156
题目:BC156 牛牛的数组匹配 描述: 牛牛刚学会数组不久,他拿到两个数组 a 和 b,询问 b 的哪一段连续子数组之和与数组 a 之和最接近。 如果有多个子数组之和同样接近,输出起始点最靠左的数组。 输入描述: 第一行输入两个正整数 n 和 m ,表示数组 a 和 b 的长度。 第二第三行输入 n 个和 m 个正整数,表示数组中 a 和 b 的值。 输出描述: 输出子数组之和最接近 a 的子数组 示例1 输入:
|
自然语言处理 编译器 Linux
C++入门(一)(下)
缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时,如果没有指定实参则采用该 形参的缺省值,否则使用指定的实参。
84 0
|
C++
C++学习——坚持(二)(2)
C++学习——坚持(二)(2)
154 0
C++学习——坚持(二)(2)