本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。
欢迎大家订阅我的专栏:算法题解:C++与Python实现!
附上汇总贴:算法竞赛备考冲刺必刷题(C++) | 汇总
【题目来源】
洛谷:B4498 [GESP202603 二级] 画画 - 洛谷
【题目描述】
输入一个正整数n nn,你需要绘制一个n nn行n nn列的正方形,绘制规则如下:
- 正方形的四个顶点使用
+绘制; - 除顶点外,第1 11行与第n nn行使用
-绘制; - 除顶点外,第1 11列与第n nn列使用
|绘制; - 正方形内部使用
*绘制。
【输入】
一行,一个正整数n nn。
【输出】
输出共n nn行,表示对应的正方形。
【输入样例】
5【输出样例】
+---+ |***| |***| |***| +---+【算法标签】
#入门 #语法基础
【代码详解】
#include<bits/stdc++.h>// 包含所有标准库头文件usingnamespacestd;// 使用标准命名空间constintN=105;// 定义常量N,表示数组的最大尺寸intn;// 变量n,表示实际使用的尺寸chara[N][N];// 定义二维字符数组a,用于存储图案intmain()// 主函数入口{cin>>n;// 输入n,表示图案的尺寸// 第一阶段:初始化整个数组为'*'for(inti=1;i<=n;i++){for(intj=1;j<=n;j++){a[i][j]='*';// 将所有位置初始化为星号}}// 第二阶段:绘制边框for(inti=1;i<=n;i++){for(intj=1;j<=n;j++){// 如果是第一行或最后一行,设置为'-'(横线)if(i==1||i==n){a[i][j]='-';}// 如果是第一列或最后一列,设置为'|'(竖线)if(j==1||j==n){a[i][j]='|';}}}// 第三阶段:设置四个角的字符为'+'a[1][1]='+';// 左上角a[1][n]='+';// 右上角a[n][1]='+';// 左下角a[n][n]='+';// 右下角// 第四阶段:输出整个图案for(inti=1;i<=n;i++){for(intj=1;j<=n;j++){cout<<a[i][j];// 输出当前位置的字符}cout<<endl;// 每输出完一行后换行}return0;// 程序正常结束}【运行结果】
5 +---+ |***| |***| |***| +---+