您的位置:首页 > 其它

hdu_1278 漂亮面料的设计

2013-06-26 17:08 309 查看
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1278

分析:我的是把第一列的放进数组的第一行,然后按规则模拟,最后比较输出就好。

代码如下:

#include<stdio.h>
#include<string.h>
char ans[210][210];
void slove(char ans[][210],int lie,int a,int h)
{
int i,j;
if(a>=0)
{
j=a;
}
else
{
j=lie+a;
}
for(i=0;i<lie;i++)
{
ans[h][j++]=ans[h-1][i];
if(j>=lie) j%=lie;
}
// printf("-------------------------\n");
// printf("a=%d\n",a);
// for(i=0;i<h;i++)
// {
// for(j=0;j<lie;j++) printf("%c",ans[i][j]);
// printf("\n");
// }
// printf("-------------------------\n");
}
int main()
{
// freopen("in.txt","r",stdin);
// freopen("out.txt","w",stdout);
int m,n;
while(~scanf("%d%d",&m,&n))
{
int t,k,i,j,one[210],zero[210];
for(i=0;i<m;i++) scanf("%d",one+i);
for(i=0;i<m;i++) scanf("%d",zero+i);
k=0;
int lie=0;
for(i=0;i<m;i++) //输入完一列。
{
for(j=0;j<one[i];j++)
{
ans[0][k++]='1';
lie++;
}
for(j=0;j<zero[i];j++) {
ans[0][k++]='0';
lie++;
}
}
for(i=0;i<n;i++) scanf("%d",one+i); //输入飞数。
for(i=0;i<n;i++) scanf("%d",zero+i);
t=1;
k=0;
for(i=0;i<n;i++)
{
while(zero[i]--)
{
slove(ans,lie,one[i],t++);
}
}
int hang=t-1;
if(strcmp(ans[0],ans[hang])==0)
{
for(i=lie-1;i>=0;i--){
for(j=0;j<hang;j++)
{
printf("%c",ans[j][i]);
}
printf("\n");
}
}
else
{
printf("Can not make beautilful cloth !\n");
}
}
return 0;
}
总结:第一次交时还是WA了,最后把Solve里面的if(a>0)改为了if(a>=0).
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: