hdu 4474數字搜尋

2022-09-04 11:18:11 字數 1134 閱讀 9854

換種思考角度

在符合數字排列組合的情況下,觀察數字是否為n的倍數。

於是從小到大查詢,通過bfs狀態轉換。

迴圈節為n。表達困難,還請看**

#include #include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define ll long long

#define clr(a,b) memset(a,b,sizeof(a))

#define lson l , m , rt << 1

#define rson m + 1 , r , rt << 1 | 1

using

namespace

std;

intn,m;

int a[10

];int num[10005];//

記錄每位餘數的真實數;

int ans[10005

];int pre[10005

];int c = 0

;void

init()

void pri(int

t) ans[c] =num[t];

for(int j = c; j >= 0; j--)

printf("%d

",ans[j]);

}void

bfs()

if(num[t]==-1

) }}

//按位由小到大搜尋

while(!q.empty())

if(t==0

) }}

}printf("-1

");}int

main()

printf(

"case %d:

",kase++);

bfs();

printf("\n

");}

}

view code

hdu3555(數字dp記憶化搜尋)

記憶化搜尋解法 include include int64 dp 25 3 dp pos pre pos記錄位數 pre記錄字首狀態0表示字首不包含49且pos 1不是4 1表示字首不包含49且pos 1位是4 2表示字首包含49 int digit 25 存數的各位上的數字 int l 存數的位數...

hdu 3709(數字dp 記憶化搜尋)

平衡數 這道題比較難吧 和以往的數字記憶化搜尋設計的狀態不太一樣 也是用的記憶化dfs 熟練之後應該就沒太大問題了 include include int64 dp 20 20 2010 pos 數字位置 v支點的位置 s 力矩的數值 int digit 20 int64 dfs int pos,i...

hdu 5179 數字dp 記憶化搜尋

dp i j 記錄第i位為j時在非限制條件下的符合條件數的個數 那麼在記憶化搜尋中標記當前狀態是否有限制,當前狀態下是否為 因為最終如果非 要返回1,是0返回0 因為最終要求的數 的取值範圍不包括0 那麼求取時直接算取get m 和get n 1 即可求解 include include inclu...