摘要:
二次dp,还算好想。先第一遍dp找出最后一个数字最小是几。dpf[i]=max{j}+1(dpf[j],dpf[j]+1,…,j位组成的数字小于j+1,j+2,…,i位组成的数字。在第二遍dp,找出第一个数字最大是几。dpb[i]=max{j}(I,i+1,…,j为组成的数字小于j+1,j+2,…,dpb[i+2]位组成的数字。按轨迹输出。!记住:每次都要将两个数组清零!(坑了我半天)代码:#include#includeusing namespace std;int dpf[90]={0},dpb[90]={0};char a[90];int max(int x,int y){ return
阅读全文