hdu1278漂亮面料的設計--模擬

一道純模擬   考細心

有幾個糟點: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;
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章