Input
第一行输入包含两个整数,n 和 k(3 ≤ n ≤ 99,0 ≤ k ≤ 2 ×(n - 2)),n是奇数。 n和k 代表城市的宽度,以及要建设的酒店数量 。
Output
Sample Input
7 2
YES ....... .#..... .#..... .......
5 3
YES ..... .###. ..... .....
题目要求从左上到右下和从左下到右上的最短路径的数目一样
考虑矩阵对称性
若n为偶数在第二行第三行(第二列开始)每次放两个 使矩阵关于x轴对称
若n为奇数先尽可能第二行放满(从中间向两边放),剩下的从两边向中间放,使矩阵关于y轴对称
第一遍在每个字符间多加了空格,wa了,找了半天。
#include <iostream> #include <cstdio> #include <cstring> using namespace std; int main() { char s[4][120]= {0}; int i,j,a,b,d,e; cin>>a>>b; memset(s,‘.‘,sizeof(s)); printf("YES\n"); if(b%2==0) { d=1; for(i=1; i<3; i++) { d=1; for(j=0; j<b/2; j++) s[i][d++]=‘#‘; } } else { e=b; s[1][a/2]=‘#‘; e--; for(i=1; i<a/2; i++) { if(e==0) break; s[1][a/2-i]=‘#‘; s[1][a/2+i]=‘#‘; e-=2; } if(e>0) { for(i=1; i<=e/2; i++) { s[2][i]=‘#‘; s[2][a-i-1]=‘#‘; } } } for(i=0; i<4; i++) { for(j=0; j<a; j++) { printf("%c",s[i][j]); } printf("\n"); } return 0; }
原文:https://www.cnblogs.com/coder-tcm/p/9319969.html