Jack 正在组装自己的飞行器,他希望从手中的一些很奇怪的能量晶石中,选择一块,作为飞行器引擎的能量来源。
每个晶石,都用一连串的数字进行标注。 可以整块使用,也可以通过对晶石的切割,得到不同强度的能量输出。
切割后,各个晶石片段能量强度之和计算方式为:各个晶石片段上的整数之和。(不可把单个数字切割成 2 半)。
由于飞行器引擎所能承受的能量强度存在上限,切割完的晶石片段,能量强度之和不能超过上限,否则将导致引擎过载。同时,为节省晶石的浪费, Jack 希望一块晶石切下来的所有片段,都必需加入到飞行器引擎中,不能丢弃。
例:晶石“ 352143”,可分割为 35,214,3。它们的能量强度之和为 252。也可分割为
352,143,能量强度和为 495
Jack 希望知道,在不导致引擎过载的同时,手中的这些能量晶石, 各自能够达到的最
接近引擎上限的能量强度是多少。
1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<math.h> 4 #include<string.h> 5 #include<algorithm> 6 #include<iostream> 7 using namespace std; 8 int func(char sc[],char b[],int flag) 9 { 10 int last=-1,t,r,m,sum=0,len=strlen(sc); 11 char part[20]; 12 for(t=0;t<len;t++) 13 { 14 if(b[t]=='1') 15 { 16 r=0; 17 for(m=last+1;m<=t;m++) 18 { 19 part[r++]=sc[m]; 20 } 21 part[r]='