• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            PKU 1128 Frame Stacking 解題

            這個題目就是一個模擬的過程
            每次找到一個完整的矩形然后把這個矩形拿出。拿走的地方全部變成*
            *號是可以表示為任何字母
            然后哦一次下去就可以了。
            優(yōu)于把題目讀錯了結(jié)果一直就在wa
            先開始把題目讀成了每個矩形左上角的點和右下角的點必定會出現(xiàn)
            結(jié)果題目的意思是出現(xiàn)的所有點中最靠左的x和最靠上的y組成的就是左上角
            同樣最靠右的最靠下的組成的就是又下角的坐標。

              1#include<stdio.h>
              2#include<iostream>
              3#include<string.h>
              4#include<string>
              5using namespace std;
              6struct C{int x,y,a,b;};
              7char data[50][50],use[30],p[30];
              8C a[30];
              9string q[100],temp;
             10int l,ans,n,m;
             11void di(int k)
             12{
             13        //printf("%d\n",k);
             14    int i,f,j;
             15    int map[50][50];
             16    if(k==l)
             17    {
             18        q[ans++]=p;
             19        return;
             20    }

             21    for(j=25;j>=0;j--)
             22    {
             23        if(use[j]||a[j].a==-1)continue;
             24        f=1;
             25        for(i=a[j].x;i<=a[j].a;i++)if((data[i][a[j].y]!=j+'A'&& data[i][a[j].y]!='*'){f=0;break;}
             26        if(f==0)continue;
             27        for(i=a[j].x;i<=a[j].a;i++)if((data[i][a[j].b]!=j+'A'&& data[i][a[j].b]!='*'){f=0;break;}
             28        if(f==0)continue;
             29        for(i=a[j].y;i<=a[j].b;i++)if((data[a[j].x][i]!=j+'A'&& data[a[j].x][i]!='*'){f=0;break;}
             30        if(f==0)continue;
             31        for(i=a[j].y;i<=a[j].b;i++)if((data[a[j].a][i]!=j+'A'&& data[a[j].a][i]!='*'){f=0;break;}
             32        //printf("");for(i=a[j].y;i<=a[j].b;i++)printf("%c",data[a[j].a][i]);printf("\n");
             33        if(f==0)continue;
             34        //printf("%d\n",j);
             35            for(i=a[j].x;i<=a[j].a;i++)
             36            {
             37                map[i][a[j].y]=data[i][a[j].y];
             38                map[i][a[j].b]=data[i][a[j].b];
             39            }

             40            for(i=a[j].y;i<=a[j].b;i++)
             41            {
             42                map[a[j].x][i]=data[a[j].x][i];
             43                map[a[j].a][i]=data[a[j].a][i];
             44            }

             45
             46            for(i=a[j].x;i<=a[j].a;i++)
             47            {
             48                data[i][a[j].y]='*';
             49                data[i][a[j].b]='*';
             50            }

             51            for(i=a[j].y;i<=a[j].b;i++)
             52            {
             53                data[a[j].x][i]='*';
             54                data[a[j].a][i]='*';
             55            }

             56
             57            use[j]=1;
             58            p[l-k-1]=j+'A';
             59            di(k+1);
             60            //printf("%d\n",j);
             61            use[j]=0;
             62            for(i=a[j].x;i<=a[j].a;i++)
             63            {
             64                data[i][a[j].y]=map[i][a[j].y];
             65                data[i][a[j].b]=map[i][a[j].b];
             66            }

             67            for(i=a[j].y;i<=a[j].b;i++)
             68            {
             69                data[a[j].x][i]=map[a[j].x][i];
             70                data[a[j].a][i]=map[a[j].a][i];
             71            }

             72    }

             73
             74}

             75int main()
             76{
             77    //freopen("input.txt","r",stdin);
             78    int i,j;
             79    char ch;
             80    while(scanf("%d%d",&n,&m)!=EOF)
             81    {
             82        scanf("%c",&ch);
             83        memset(data,0,sizeof(data));
             84        memset(use,0,sizeof(use));
             85        memset(a,-1,sizeof(a));
             86        l=0;ans=0;
             87        for(i=0;i<n;i++)
             88        {
             89            for(j=0;j<m;j++)
             90            {
             91                scanf("%c",&data[i][j]);
             92                if(data[i][j]!='.')
             93                {
             94                    
             95                    if(a[data[i][j]-'A'].x==-1)l++;
             96                    if(a[data[i][j]-'A'].x==-1||a[data[i][j]-'A'].x>i)a[data[i][j]-'A'].x=i;
             97                    if(a[data[i][j]-'A'].y==-1||a[data[i][j]-'A'].y>j)a[data[i][j]-'A'].y=j;
             98                    if(a[data[i][j]-'A'].a==-1||a[data[i][j]-'A'].a<i)a[data[i][j]-'A'].a=i;
             99                    if(a[data[i][j]-'A'].b==-1||a[data[i][j]-'A'].b<j)a[data[i][j]-'A'].b=j;
            100                }

            101            }

            102            scanf("%c",&ch);
            103        }

            104        //for(i=0;i<l;i++)printf("%d %d %d %d\n",a[i].x,a[i].y,a[i].a,a[i].b);
            105    /*
            106        for(i=0;i<n;i++)
            107        {
            108            for(j=0;j<n;j++)printf("%c",data[i][j]);
            109            printf("\n");
            110        }
            111    */

            112        p[l]=0;ans=0;
            113        di(0);
            114        for(i=0;i<ans;i++)
            115            for(j=0;j<ans-1;j++)
            116                if(q[j]>q[j+1])
            117                {
            118                    temp=q[j];
            119                    q[j]=q[j+1];
            120                    q[j+1]=temp;
            121                }

            122        for(i=0;i<ans;i++)cout<<q[i]<<endl;
            123    
            124
            125    //    printf("%d\n",ans);
            126    }

            127    return 0;
            128}

            129

            posted on 2008-07-19 19:20 gong 閱讀(1149) 評論(0)  編輯 收藏 引用


            只有注冊用戶登錄后才能發(fā)表評論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            <2008年7月>
            293012345
            6789101112
            13141516171819
            20212223242526
            272829303112
            3456789

            導(dǎo)航

            統(tǒng)計

            常用鏈接

            留言簿(6)

            隨筆檔案

            搜索

            積分與排名

            最新評論

            閱讀排行榜

            評論排行榜

            久久国产亚洲高清观看| 久久伊人影视| 国产午夜精品久久久久九九电影| 91久久精品电影| 人妻无码精品久久亚瑟影视 | 国产精品一区二区久久精品涩爱| 久久天天躁狠狠躁夜夜不卡| 日产精品99久久久久久| 久久综合久久鬼色| 成人久久精品一区二区三区 | 国产情侣久久久久aⅴ免费| 99热热久久这里只有精品68| 天天影视色香欲综合久久| 久久精品中文字幕无码绿巨人| 久久久久这里只有精品| 2022年国产精品久久久久| 伊人久久国产免费观看视频 | 国产精品女同久久久久电影院 | A狠狠久久蜜臀婷色中文网| 无码任你躁久久久久久| 精品久久久久久久久午夜福利| 久久久噜噜噜久久中文字幕色伊伊| 国产国产成人久久精品| 久久天天躁狠狠躁夜夜躁2O2O| 久久www免费人成看片| 国产成人精品久久综合| 久久成人影院精品777| 国产精品久久午夜夜伦鲁鲁| 久久大香萑太香蕉av| 中文成人无码精品久久久不卡| 亚洲国产精品无码久久久久久曰| 中文精品久久久久国产网址| 婷婷综合久久中文字幕蜜桃三电影| 久久丫忘忧草产品| 中文字幕久久亚洲一区| 久久艹国产| 久久精品无码免费不卡| 精品久久久久久无码中文野结衣 | 久久久久亚洲AV无码麻豆| 午夜不卡久久精品无码免费| 国产成人无码精品久久久性色|