目录
1、打印大X(15年省赛)
解析:一道模拟题,我们发现它的宽度是m+n-1,所以我们用两重循环就能打印了。
整个X都是轴对称的,也就是左右的符号是一样,所以我们需要两个指针标记*的起点(中线左右的点数是一样多的,用两个指针标记起点(左边的起点在最左边,右边的在最右边)),然后分别逐步往反方向靠,打印的时候就以两个指针的位置和宽度m作为判定条件。
#include <bits/stdc++.h>
#define INF 0x3f3f3f3f
#define MOD 1000000009
using namespace std;
typedef long long LL;
int n,m;
int main() {
cin>>m>>n;
int s=m+n-1;
int s1=1,s2=m+n-1;//双指针(分别标记起点和终点)
for(int i=1; i<=n; i++) {
for(int j=1; j<=s; j++) {
if((j<s1+m && j>=s1) || (j<=s2 && j>s2-m)) cout<<'*';//枚举起点和宽度
else cout<<'.';
}
s1++,s2--;//双指针往反方向移动
cout<<endl;
}
return 0;
}