思路:关键是发现列数的规律,我们可以从最中间的哪一行看出:列数=行数/2(取整)+笔画宽度。
把大X分成两笔:左上到右下,右上到左下
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string.h>
#include<math.h>
#include<string>
using namespace std;
#define ll long long
const int maxn=1e5+5;
#include<vector>
char mp[1005][1005];
int main()
{
int x,y;
while(~scanf("%d%d",&x,&y))
{
for(int i=1;i<=y;i++)
{
for(int j=1;j<=2*(y/2)+x;j++)
{
mp[i][j]='.';
}
}
for(int i=1;i<=y;i++) ///左上到右下
{
for(int j=i;j<=x+i-1;j++)
{
mp[i][j]='*';
}
}
for(int i=1;i<=y;i++) ///右上到左下
{
for(int j=2*(y/2)+2-i;j<=2*(y/2)+x-i+1;j++)
{
mp[i][j]='*';
}
}
for(int i=1;i<=y;i++)
{
for(int j=1;j<=2*(y/2)+x;j++)
{
printf("%c",mp[i][j]);
}
printf("\n");
}
}
}