原题链接:画三角形
解题思路:
最开始我是想暴力的,然鹅....
写到900+的行数,全是三角形......我就已经吐血了....最主要的是这样写还不对....题目挖坑,“\\”双斜杠,才可以正常的表示一个斜杠,因为'\'本身表示一种特殊的控制符表示,比如'\n'这就是换行符,所以语法规定"\\"才能表示为'\'的显示....真的是要人吐血啊。
中毒....下次各位见到画图题,数据上了10,千万不要像我这样暴力了。。。。
说回来正常的思路:
看过一些算法书的同学可能会知道,我们其实可以借助一个常量字符串的格式来将我们所需要格式输出的某一个东西(就是这个东西重复出现),进行预设。
比如这题就可以这样对金字塔的每一个三角形进行预设:
const char rec[3]="/\\"; //"\"需要使用双斜杠才能表示
然后照常按照我们给一些矩阵画图的思路,进行空格的填充,同时换行的填充,以及三角的填充,具体的方式各位可以直接看代码。
参考代码:
#include<bits/stdc++.h> #define hh ios::sync_with_stdio(false),cin.tie(0),cout.tie(0); #pragma GCC optimize(2) using namespace std; int main(){ hh; const char rec[3]="/\\"; int n; while(cin>>n){ int temp=n,ans=0; while(n>0&&ans<=temp){ for(int i=0;i<n-1;i++){ cout<<' '; } for(int i=0;i<ans+1;i++){ cout<<rec; } cout<<endl; n--; ans++; } } return 0; }
PS:这里用到了一个输入输出流优化以及开启了O2优化,这是个人用喜欢使用的竞赛模板...
//#define hh ios::sync_with_stdio(false),cin.tie(0),cout.tie(0); #pragma GCC optimize(2)
这两句话看不懂的话,直接删掉就好了...反正数据量小,没啥区别的
PPS:我期待一个不正常的方法
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复