hdu1278漂亮面料的设计--模拟

本文介绍了一个纯模拟算法的实现细节,特别关注于处理输入数据、创建特定的模式并进行模式匹配的过程。文章强调了几个容易忽略的问题点,如输出边界条件、偏差计算等,并提供了一段完整的C++代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一道纯模拟   考细心

有几个糟点:1.题目要求竖纹反向,但平移的时候加的偏差是正向的,如果看自己输出反了就单纯改下输出是不行的

                        2.最后一列不输出

                        3.平移的时候加的偏差可能超过竖纹长度不止一倍

#include <bits/stdc++.h>

using namespace std;
int x[205],xin[2][205],y[205],yin[2][205],s[205][205],szx,szy,xs,ys;
void creax()
{
    xs=0;
    for(int i=0;i<szx;i++)
    {
        for(int k=0;k<xin[0][i];k++)
        {
            x[xs]=1;
            xs++;
        }
        for(int k=0;k<xin[1][i];k++)
        {
            x[xs]=0;
            xs++;
        }
    }
}
void creay()
{
    ys=0;
    for(int i=0;i<szy;i++)
    {
        for(int k=0;k<yin[1][i];k++)
        {
            y[ys]=-yin[0][i];
            ys++;
        }
    }
}
void crea()
{
    for(int i=0;i<xs;i++)s[i][0]=x[i];
    int bias=0;
    for(int j=0;j<ys;j++)

    {
        bias+=y[j];
        for(int i=0;i<xs;i++)
        {

            int cur=i+bias;
            while(cur<0)cur+=xs;
            while(cur>=xs)cur-=xs;
            s[i][j+1]=x[cur];
          // cout<<cur<<" ";
        }
     //   cout<<endl;
    }

}
int main()
{//cin>>szx>>szy;
    while( cin>>szx>>szy)

    {

    for(int i=0;i<2;i++)
        for(int j=0;j<szx;j++)
    {
        cin>>xin[i][j];
    }
    for(int i=0;i<2;i++)
        for(int j=0;j<szy;j++)
    {
        cin>>yin[i][j];
    }
    creax();
    creay();
    crea();
    for(int i=0;i<xs;i++)
    {
      //  cout<<x[i]<<" ";
    }//cout<<endl;
    for(int i=0;i<ys;i++)
    {
       // cout<<y[i]<<" ";
    }//cout<<endl;
    bool flag=true;

    for(int i=0;i<xs;i++)
    {
        if(s[i][0]!=s[i][ys])
        {
            flag=false;
            break;
        }
    }
    if(flag)
    for(int i=xs-1;i>=0;i--)
    {
        for(int j=0;j<ys;j++)
        {
            cout<<s[i][j];
        }
        cout<<endl;
    }
    else cout<<"Can not make beautilful cloth !"<<endl;
  //  system("palse");
    }

    return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值