poj1416 簡單dfs列舉題

2021-06-23 08:52:23 字數 681 閱讀 8530

這題沒啥好說的,就是將字串num分割成好幾個整數,並相加起來,看看哪種分割情況的和是最接近 t  的

因為每個num最多只有6位,所以總共的分割情況也就32種,非常簡單,只要能寫出dfs函式就可以了

#include#includeusing namespace std;

int t,flag,k,ansn,len,max,v[100],vn;

char num[8];

int ans[8],a[8];

int power(int x,int y)

void dfs(int f,int sum,int n)

{ int i,j,l;

if(f==len)

{ if(sum<=t) //如果小於t說明已經肯定有max,flag標記1

{ flag=1;

if(sum>max)

{max=sum;

for(i=0;i1)

printf("rejected\n");

else

{ printf("%d ",max);

for(i=0;i

POJ1416 切割紙條 DFS 剪枝

這題目個人感覺有點難,很難抽象出具體的搜尋模型,看了別人的解題報告才有思路。切割乙個資料即切割紙條,相加的和最接近給出目標的值。比如,12346是資料,target的值是50,應該把數字切成四部分,分別是1 2 34 6。因為這樣所得到的和43 1 2 34 6 是所有可能中最接近而不超過50的。碎...

poj1416數字切割解題報告

題意 有一段紙片,就是乙個不超過7位數的整數,現在給定你乙個目標值 aim 讓你去選擇把紙片切成幾段,然後這個幾段的和值 最接近 aim 且不超過 aim,分析 對於這個紙段,比如乙個 四位數的 1234,那麼第一你就有以下幾種切法 1 234 1 2 34 1 2 3 4 12 34 那麼 對於這...

置頂 poj1416數字切割解題報告

題意 有一段紙片,就是乙個不超過7位數的整數,現在給定你乙個目標值 aim 讓你去選擇把紙片切成幾段,然後這個幾段的和值 最接近 aim 且不超過 aim,分析 對於這個紙段,比如乙個 四位數的 1234,那麼第一你就有以下幾種切法 1 234 1 2 34 1 2 3 4 12 34 那麼 對於這...