题目
题目链接
题解
SB题。做不出来就算了。
题目给的图很难看出和“十字型”有鸡毛关系。
还是看我打印出来的吧。因为原图给的dollar符是斜体,所以很难观察出规律。
还是自己尝试着打印吧,不同人不同思路。
我的思路:图是中心对称的,将图分为四块,保存下左上角的部分,其他三部分均可由左上角的部分变形而成(左右翻转或上下翻转);单独输出中间一行。
还是建议不要看我代码,因为看了你也看不懂,不如自己试着写写,或者直接忽略这个SB题。
代码#include using namespace std; int n; string row1, row2, a[200], b[200]; int main() { cin>>n; row1 = ".."; for(int i = 1;i <= 2*n;i ++) row1 +="$"; row2 = "..$";for(int i = 1;i <= 2*n-1;i ++) row2 +="."; for(int i = 1;i <= n;i ++) { for(int j = 1;j < i;j ++) a[i] += "$."; a[i] += "$$$."; for(int j = 1;j <= n-i;j ++) a[i] += "$$"; } for(int i = 1;i <= n;i ++) { for(int j = 1;j <= i;j ++) b[i] += "$."; b[i] += ".."; if(n-i) b[i] += "$"; for(int j = 1;j <= 2*(n-i)-1;j ++) b[i] += "."; } cout<<row1<<"$"; for(int i = 2*n+1;i >= 0;i --) cout<<row1[i]; puts(""); cout<<row2<<"."; for(int i = 2*n+1;i >= 0;i --) cout<<row2[i]; puts(""); for(int i = 1;i <= n;i ++) { string str = a[i]; reverse(str.begin(), str.end()); a[i]+="$"; a[i]+=str; cout<<a[i]<<endl; // cout<关注打赏