題目:疊筐
思路:一開始直接從第一行到最后一行排出泪喊,到中間時氯质,需有一個判斷,因為在輸出時徘溢,以輸入一邊,輸入中間捆探,在輸入另一邊的格式出來然爆,判斷它過中間了,給它加上num=4徐许,后面就在num的基礎(chǔ)上在加4施蜜,用以抵消后面k增長的2,其實總的就是要其只升2雌隅。后面一邊的格式是與前面相反的排序翻默,只需賦值相反即可。
但在提交時恰起,卻在1時沒有輸出且不按題目的要求輸出修械,在題目要求是從內(nèi)到外排序,而我做題卻是從外到內(nèi)检盼,于是有規(guī)律在輸入的外筐尺寸n有(n-1)/2是否奇數(shù)來相反肯污。本來經(jīng)過一頓騷操作后,準備ac時吨枉,出現(xiàn)了最坑的一處:輸出格式問題蹦渣,在除第一個輸出外,后面輸出都要在前面多除一個空行貌亭。這個地方與2091有著相同的坑柬唯。
#include<iostream>
#include<cstdio>
using namespace std;
int main(){
int n,flag=0;
char a,b,c,f=0;
while(cin>>n>>a>>b){
if(flag!=0) cout<<endl;
flag++;
if(n==1){
cout<<a<<endl;
}else{
char ll;
if(((n-1)/2)%2==1){
ll=a;
a=b;
b=ll;
}
char ji[81];
int t = n,i,j,d,h,k=2,m,num=4;
ji[0]=a;
for(i=1;i<t;i++){
if(ji[i-1]==a){
ji[i]=b;
}else{
ji[i]=a;
}
}
while(n--){
if(n==t-1 || n==0){
cout<<' ';
for(i=0;i<t-2;i++) cout<<a;
cout<<' ';
cout<<endl;
}else{
h=t-k;
if(k>=t+1){
h=h+num;
num+=4;;
}
k/=2;
for(j=0;j<(t-h)/2;j++){
cout<<ji[j];
}
for(d=0;d<h;d++){
cout<<ji[j];
}
for(j=(t-h)/2;j>0;j--){
cout<<ji[j-1];
}
k=k*2+2;
cout<<endl;
}
}}
}
}