「牛客网C」初学者入门训练BC134,BC136
🐶博主主页:@ᰔᩚ. 一怀明月ꦿ
🔥座右铭:“不要等到什么都没有了,才下定决心去做”
🚀🚀🚀大家觉不错的话,就恳求大家点点关注,点点小爱心,指点指点🚀🚀🚀
题目: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,行不变--------往右移动一格
以上四种是在边界上面移动.只有向右 和 向下
除去上面四种的边界情况,就是在边界中间的左下移动
除去上面四种的边界情况,就是在边界中间的右上移动
最后两种是在边界内移动 只有右上和左下
#include<stdio.h> int main() { int n=0; printf("请输入矩阵的阶数 "); scanf("%d",&n); int arr[n+2][n+2];//虽然定义了一个,n+2阶的矩阵,但是我们只需要n阶矩阵 for(int i=0;i<n+2;i++) { for(int j=0;j<n+2;j++) { arr[i][j]=0; } } arr[1][1]=1; int k=0; int i=1,j=1,pos=1; for(k=2;k<=n*n;k++) { if(i==1&&j<n&&pos==1)//上边界,行不变,列增加一 { arr[i][++j]=k; pos=-1; } else if(j==1&&i<n&&pos==-1)//左边界,列不变,行增加一 { arr[++i][j]=k; pos=1; } else if(j==n&&pos==1)//右边界,行加一,列不变 { arr[++i][j]=k; pos=-1; } else if(i==n&&pos==-1)//下边界,行不变,列加一 { arr[i][++j]=k; pos=1; } else if(pos==1)//右上 { arr[--i][++j]=k; } else if(pos==-1)//左下 { arr[++i][--j]=k; } } for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { printf("%-4d",arr[i][j]); } printf(" "); } }
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个元素。
#include<stdio.h> int main() { int n=0; printf("亲输入输入方阵边长 "); scanf("%d",&n); int arr[n][n]; int i=0,j=0; int count=0; printf("请输入矩阵 "); for( i=0;i<n;i++) { for( j=0;j<n;j++) { scanf("%d",&arr[i][j]); } } for( i=1;i<n;i++) { for( j=0;j<i;j++) { if(arr[i][j]!=0) { printf("NO "); count=1; goto agin; } } } agin: if(count==0) { printf("YES "); } return 0; }
这里用到了,goto语句,如果判断它有一个元素不是0,就直接跳出两重循环,这样减少了,循环次数。
🌸🌸🌸如果大家还有不懂或者建议都可以发在评论区,我们共同探讨,共同学习,共同进步。谢谢大家! 🌸🌸🌸
相关文章
- Watch国外一款强大的开源项目
- 23种设计模式(一) —— 手写实现 Iterator模式
- 23种设计模式(二) —— 手写实现 Adapter 模式
- 自动化和人工智能的区别你知道吗?
- HTMOT:随时间变化的分层主题建模
- 产品经理如何高效的做用户调研?
- 51CTO 网+第九期线下公开课干货分享:移动APP UI设计创新之美
- 23种设计模式(三) —— 手写实现 Template Method 模式 (将具体交给子类)
- 展望未来,无人驾驶车辆将如何改变我们的世界
- 23种设计模式(四) —— 手写实现 Factory Method 模式 (将具体交给子类)
- 23种设计模式(五) —— 手写实现 Singleton 模式 (生成实例)
- Leetcode 刷题笔记 - 1
- 作为设计师你在制定五年规划?别傻了
- 23种设计模式(六) —— 手写实现 Prototype 模式 (生成实例)
- 颜值最高:怎么看指尖上的设计与美食?
- 设计之我认为的关键词:匹配
- 聊一聊我常用的6种绘制地图的方法
- 人工智能如何拯救地球
- 使用AI在工业数据中寻找价值
- 谷歌虚拟现实头盔售出500万套