HDU2074叠筐(规律题)
#include<iostream>
using namespace std;
int main()
{
char stuff,boder;
int N,flag = 0;
while(cin>>N>>stuff>>boder)
{
if(flag !=0)//*********注意两个叠筐间空一行
cout<<endl;
flag=1;
if(N == 1) //N=1时单独讨论
{
cout<<stuff<<endl;
continue;
}
int flag = ((N-1)/2)%2; //确定最外层字符
char temp;
if(flag == 0)
{
temp = boder;
boder = stuff;
stuff = temp;
}
for(int i =1;i<=N;i++)
{
if(i == 1||i == N) 第一行和最后一行
{
cout<<" ";
for(int j = 1;j<N-1;j++)
cout<<boder;
cout<<" ";
cout<<endl;
}
else if(i<=N/2+1) 第二行到N/2+1行
{
for(int j = 1; j<=N ; j++)
{
if((j<=i&&j%2==1)||(j>N-i&&j%2==1))
cout<<boder;
else if((j<=i&&j%2==0)||(j>N-i&&j%2==0))
cout<<stuff;
else
{
if(i%2 ==0)
cout<<stuff;
else
cout<<boder;
}
}
cout<<endl;
}
else if(i>N/2+1&&i<=N-1) N/2+2行到倒数第二行
{
int i1 = N-i+1;
for(int j = 1; j<=N ; j++)
{
if((j<=i1&&j%2==1)||(j>N-i1&&j%2==1))
cout<<boder;
else if((j<=i1&&j%2==0)||(j>N-i1&&j%2==0))
cout<<stuff;
else
{
if(i%2 == 0)
cout<<stuff;
else
cout<<boder;
}
}
cout<<endl;
}
}
}
return 0;
}
规律题,找出规律后循环做就ok了;关键看格式,第一行和最后一行的第一个字符还有最后一个字符都应该是空格(缺少会PE)。