zoukankan      html  css  js  c++  java
  • ural 1495 bfs

    定义状态visit[i][j]表示最后一位是i且该数字mod n的余数是j的情况,然后按位来bfs即可,转移时先考虑1再考虑2,这样求出来的答案就是长度和数值都最小的了。

     1 #include <iostream>
     2 #include <cstring>
     3 #include <cstdio>
     4 using namespace std;
     5 
     6 const int N = 1000007;
     7 int n, head, tail;
     8 bool visit[3][N];
     9 
    10 struct Node
    11 {
    12     int d, r, len, pre;
    13     Node(){}
    14     Node( int _d, int _r, int _len, int _pre )
    15     {
    16         d = _d, r = _r, len = _len, pre = _pre;
    17     }
    18 } q[N << 1];
    19 
    20 void dfs( int x )
    21 {
    22     if ( x == -1 ) return ;
    23     dfs( q[x].pre );
    24     printf("%d", q[x].d);
    25 }
    26 
    27 void bfs()
    28 {
    29     memset( visit, 0, sizeof(visit) );
    30     head = tail = 0;
    31     q[tail++] = Node( 1, 1 % n, 1, -1 );
    32     q[tail++] = Node( 2, 2 % n, 1, -1 );
    33     visit[1][1 % n] = 1;
    34     visit[2][2 % n] = 1;
    35     while ( head < tail )
    36     {
    37         if ( q[head].len > 30 )
    38         {
    39             break;
    40         }
    41         if ( q[head].r == 0 )
    42         {
    43             dfs(head);
    44             putchar('
    ');
    45             return ;
    46         }
    47         for ( int k = 1; k <= 2; k++ )
    48         {
    49             int rr = ( q[head].r * 10 + k ) % n;
    50             if ( !visit[k][rr] )
    51             {
    52                 q[tail++] = Node( k, rr, q[head].len + 1, head );
    53                 visit[k][rr] = 1;
    54             }
    55         }
    56         head++;
    57     }
    58     printf("Impossible
    ");
    59 }
    60 
    61 int main ()
    62 {
    63     while ( scanf("%d", &n) != EOF )
    64     {
    65         bfs();
    66     }
    67     return 0;
    68 }
  • 相关阅读:
    建设全功能团队
    gwt之mvc4g
    SQLServer代码差异备份
    DateTimePicker选择到秒
    SQL定时备份并删除过期备份
    Div文本垂直居中
    WinForm当前窗口抓图
    web架构设计经验分享(转)
    用yui compressor 压缩 javascirpt脚本
    查看sqlserver连接数
  • 原文地址:https://www.cnblogs.com/huoxiayu/p/4812635.html
Copyright © 2011-2022 走看看