有乙個由數字1-9組成的數字串(長度不超過200),問如何將m(1<=m<=200)個加號插入這個數字串中,使得所形成的算術表示式的值最小。
加號不能加在數字串的最前面或最末尾,也不應有兩個或兩個以上的加號相鄰
m的值一定小於數字串的長度
例如:數字串79846,若需加入兩個加號,則最佳方案是79+8+46,算術表示式的值為133。
**如下:
#include
#include
using
namespace std;
const
int n =
200;
//const int inf = 0x3f3f3f3f;
int dp[n]
[n];
int num[n]
[n];
int m;
char ch[n]
;//算從第k個數字到第p個數字(不包括)組成的值
intnum
(int k,
int p)
int sum =0;
for(
int i = k; i) num[k]
[p]= sum;
return sum;
}//前p個數字加m個加號的最小值
intdp
(int p,
int m)
if(m ==0)
//賦乙個const型別的值,表示dp[p][m]一旦有了值以後就不允許通過賦值來改變它
//這裡用無窮大值inf = 0x3f3f3f3f的意義是?我隨便用個const int型別的值都可以啊
dp[p]
[m]= n;
for(
int i = p -
1; i>=m; i--
)return dp[p]
[m];
}int
main()
字元中找出連續最長的數字串
輸入示例 asdfgh245467sds12 輸出示例 先放 include includeusing namespace std int main else for int i 0 i 0 str i 9 for int i 0 i以下是我覺得重要的 for int i 0 i 0 str i 9...
數字序列中某一位的數字
面試題44 數字序列中某一位的數字 題目 數字以0123456789101112131415 的格式序列化到乙個字串行中。在這 個序列中,第5位 從0開始計數 是5,第13位是1,第19位是4,等等。請寫一 個函式求任意位對應的數字。static int digit at uint32 t inde...
數字序列中某一位的數字
012345678910.序列中,第n位數 def solution n if n 0 return 1 if n 10 return n i 2 確定是第幾位數 sums 10 ret 0while true 一位數 0 9 共10個字元 兩位數 10 99 共180個字元 三位數 100 999...