置頂 poj1416數字切割解題報告

2021-09-09 03:06:12 字數 1047 閱讀 6959

題意:有一段紙片,就是乙個不超過7位數的整數,現在給定你乙個目標值 aim ,讓你去選擇把紙片切成幾段,然後這個幾段的和值 最接近 aim 且不超過 aim,

分析:對於這個紙段,比如乙個 四位數的 1234,那麼第一你就有以下幾種切法:  (1、234)  (1、2、34)  (1、2、3、4) (12、34) ().........那麼 對於這麼多個情況,我們就想乙個不重複 的 有順序的切割方式.....

比如我按照切的次數,第一次....我可以把第乙個數字切下來,,,,也可以把第一和第二個數字切下來,那麼就如下圖有:

那麼圖中就畫出的幾個 組合...(1、2、3、4)(1、2、34)(1、23、4)那麼可以用乙個for迴圈來處理這個切的過程....然後就按照這個dfs,下面給出**....

// 164k 0ms 

#include#includeint aim;

char shred[7];//要切割的數字,做字串處理

int max_sum;//最大值次數

int flag_max;//最大值

int shred_sum;//切割次數

int ans[7];//最終結果

int ans_flag[7];//臨時結果儲存

void dfs(int x,int num,int y)//這裡表示我們從第x 位開始切,當前切得值為num,切的次數為 y

else if(num == flag_max)

max_sum = 2;

} int sum = 0;

for(int i = x ; i < strlen(shred); i ++) //我們從當前的x 位置 乙個乙個嘗試 }

個人愚昧觀點...歡迎指正和討論;;;

poj1416數字切割解題報告

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

POJ1416 切割紙條 DFS 剪枝

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

poj1416 簡單dfs列舉題

這題沒啥好說的,就是將字串num分割成好幾個整數,並相加起來,看看哪種分割情況的和是最接近 t 的 因為每個num最多只有6位,所以總共的分割情況也就32種,非常簡單,只要能寫出dfs函式就可以了 include includeusing namespace std int t,flag,k,ans...