• <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>

            misschuer

            常用鏈接

            統(tǒng)計(jì)

            積分與排名

            百事通

            最新評(píng)論

            hdu 1195 Open the Lock

            http://acm.hdu.edu.cn/showproblem.php?pid=1195

            #include <iostream>
            #include 
            <queue>
            using namespace std;

            struct root
            {
                
            char data[ 5 ];
                
                
            int step;
            }
            ;

            int visited[ 10000 ];

            char ne[ 5 ] , ps[ 5 ];

            int getdigit(char str[ ])
            {
                
            return (str[ 0 ] - '0'* 1000 + (str[ 1 ] - '0'* 100 + (str[ 2 ] - '0'* 10 + (str[ 3 ] - '0');
            }


            void bfs()
            {
                
            int i , k;
                
                
            char change[ 5 ] , temp;
                
                queue
            <root> Q;
                
                root p , q;
                
                strcpy(p.data , ne);
                
                p.step 
            = 0;
                
                Q.push(p);
                
                
            while (!Q.empty())
                
            {
                    q 
            = Q.front();
                    
                    Q.pop();
                    
                    
            if(strcmp(q.data , ps) == 0)
                    
            {
                        cout 
            << q.step << endl;
                        
                        
            break;
                    }

                    
                    
            for (i = 0 ; i < 4 ; ++ i)
                    
            {
                        
            if (i < 3)
                        
            {
                            strcpy(change , q.data);
                            
                            temp 
            = change[ i ];
                            
                            change[ i ] 
            = change[i + 1];
                            
                            change[i 
            + 1= temp;
                            
                            k 
            = getdigit(change);
                            
                            
            if (visited[ k ] == 0)
                            
            {
                                visited[ k ] 
            = 1;
                                
                                strcpy(p.data , change);
                                
                                p.step 
            = q.step + 1;
                                
                                Q.push(p);
                            }

                            
                            
                        }

                        
                        
                        
            if (q.data[ i ] == '1')
                        
            {
                            strcpy(change , q.data);
                            
                            change[ i ] 
            = '9';
                            
                            k 
            = getdigit(change);
                            
                            
            if (visited[ k ] == 0)
                            
            {
                                visited[ k ] 
            = 1;
                                
                                strcpy(p.data , change);
                                
                                p.step 
            = q.step + 1;
                                
                                Q.push(p);
                            }

                            strcpy(change , q.data); 
                            
                            change[ i ] 
            = '2';
                            
                            k 
            = getdigit(change);
                            
                            
            if (visited[ k ] == 0)
                            
            {
                                visited[ k ] 
            = 1;
                                
                                strcpy(p.data , change);
                                
                                p.step 
            = q.step + 1;
                                
                                Q.push(p);
                            }

                            
                        }

                        
                        
            else
                            
            if( q.data[ i ]  == '9')
                            
            {
                                
                                strcpy(change , q.data); 
                                
                                change[ i ] 
            = '8';
                                
                                k 
            = getdigit(change);
                                
                                
            if (visited[ k ] == 0)
                                
            {
                                    visited[ k ] 
            = 1;
                                    
                                    strcpy(p.data , change);
                                    
                                    p.step 
            = q.step + 1;
                                    
                                    Q.push(p);
                                }

                                
                                strcpy(change , q.data); 
                                
                                change[ i ] 
            = '1';
                                
                                k 
            = getdigit(change);
                                
                                
            if (visited[ k ] == 0)
                                
            {
                                    visited[ k ] 
            = 1;
                                    
                                    strcpy(p.data , change);
                                    
                                    p.step 
            = q.step + 1;
                                    
                                    Q.push(p);
                                }

                                
                            }

                            
                            
            else
                            
            {
                                strcpy(change , q.data); 
                                
                                change[ i ] 
            = change[ i ] - 1;
                                
                                k 
            = getdigit(change);
                                
                                
            if (visited[ k ] == 0)
                                
            {
                                    visited[ k ] 
            = 1;
                                    
                                    strcpy(p.data , change);
                                    
                                    p.step 
            = q.step + 1;
                                    
                                    Q.push(p);
                                }

                                
                                strcpy(change , q.data); 
                                
                                change[ i ] 
            = change[ i ] + 1;
                                
                                k 
            = getdigit(change);
                                
                                
            if (visited[ k ] == 0)
                                
            {
                                    visited[ k ] 
            = 1;
                                    
                                    strcpy(p.data , change);
                                    
                                    p.step 
            = q.step + 1;
                                    
                                    Q.push(p);
                                }

                                
                            }
            //else
                            
                    }
            //for()
                    
                }
            //while()
                
            }



            int main()
            {
                
            int t;
                
                cin 
            >> t;
                
                
            while (t --)
                
            {
                    scanf (
            "%s %s" , ne , ps);
                    
                    memset (visited , 
            0 , sizeof (visited));
                    
                    bfs();
                }

                
                
            return 23;
            }

            posted on 2009-04-19 10:42 此最相思 閱讀(365) 評(píng)論(0)  編輯 收藏 引用 所屬分類: bfs


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


            国产情侣久久久久aⅴ免费| 无码精品久久一区二区三区| 国产成年无码久久久免费| 97精品依人久久久大香线蕉97 | 97久久精品午夜一区二区| 久久本道伊人久久| 久久天天躁狠狠躁夜夜不卡| 亚洲精品白浆高清久久久久久 | 久久99精品久久久久子伦| 国内精品久久久久| 久久精品青青草原伊人| 91麻精品国产91久久久久 | 久久亚洲电影| 99久久无色码中文字幕| 一本色道久久综合| 99久久精品免费观看国产| 狠狠色婷婷久久综合频道日韩| 91超碰碰碰碰久久久久久综合| 亚洲AV无码久久精品蜜桃| 国产精品熟女福利久久AV| 97久久精品无码一区二区天美 | 久久久综合香蕉尹人综合网| 久久精品国产网红主播| 一本久久a久久精品综合香蕉 | 国产美女亚洲精品久久久综合| 99久久精品国产综合一区| 久久影院综合精品| 精品熟女少妇AV免费久久| 伊人久久大香线蕉无码麻豆| 久久久久久久久久久免费精品| 亚洲狠狠综合久久| 亚洲国产成人久久综合一 | 色欲av伊人久久大香线蕉影院| 久久精品国产男包| 伊人久久大香线蕉成人| 国产免费久久精品99re丫y| 亚洲国产成人乱码精品女人久久久不卡 | 久久av高潮av无码av喷吹| 一本大道加勒比久久综合| 久久免费高清视频| 久久艹国产|