2 条题解
-
3
基本思路:双循环控制行和列,由X宽度和高度已知矩形的整体宽度len。
循环每一行时得到每行需要打印 * 的索引范围,打印 * ,其余的打印 . 即可;
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <string> using namespace std; int n, m, t = 0, l = 1, len; int main() { cin >> n >> m; len = m + n - 1; //找到的规律 for (int i = 1; i <= m; i++) { for (int j = 1; j <= m + n - 1; j++) { if (j >= l && j <= l + n - 1 || j >= len - n + 1 && j <= len) { cout << "*"; //在不在两个区间内 } else { cout << "."; } } cout << endl; l++, len--; } return 0; }
-
1
#include<stdio.h> int main(){ int m,n; scanf("%d %d",&m,&n); int a=(n/2)*2+m; for(int i=0;i<n/2;i++){ int b=a-2*m-2*i; for(int j=1;j<=i;j++) printf("."); if((a-2*i)>2*m){ for(int j=1;j<=m;j++) printf("*"); for(int j=1;j<=b;j++) printf("."); for(int j=1;j<=m;j++) printf("*"); }else{ for(int j=1;j<=a-2*i;j++){ printf("*"); } } for(int j=1;j<=i;j++) printf("."); printf("\n"); } for(int i=1;i<=(a-m)/2;i++) printf("."); for(int i=1;i<=m;i++) printf("*"); for(int i=1;i<=(a-m)/2;i++) printf("."); printf("\n"); for(int i=n/2-1;i>=0;i--){ int b=a-2*m-2*i; for(int j=1;j<=i;j++) printf("."); if((a-2*i)>2*m){ for(int j=1;j<=m;j++) printf("*"); for(int j=1;j<=b;j++) printf("."); for(int j=1;j<=m;j++) printf("*"); }else{ for(int j=1;j<=a-2*i;j++){ printf("*"); } } for(int j=1;j<=i;j++) printf("."); printf("\n"); } return 0; }
- 1
信息
- ID
- 790
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 2
- 标签
- 递交数
- 247
- 已通过
- 74
- 上传者