18分求助!!!
查看原帖
18分求助!!!
770104
louzhengzhe2009楼主2022/10/23 21:32
#include<bits/stdc++.h>
using namespace std;
string s;
int n,i,j;
long long k,f[50][50],p[50][500005];
int main(){
	getline(cin,s);
	scanf("%d",&n);
	for(i=0;i<s.size();i++)
	for(j=i;j<=min(i+11,int(s.size()-1));j++)
	f[i+1][j+1]=f[i+1][j]*10+s[j]-48;
	for(i=0;i<=s.size()+1;i++)
	for(j=0;j<=n+1;j++)p[i][j]=INT_MAX/3;
	p[0][0]=0;
	for(i=1;i<=s.size();i++)
	for(j=max(1,i-11);j<=i;j++)
	for(k=f[j][i];k<=n;k++)
	if(p[j-1][k-f[j][i]]!=INT_MAX/3)p[i][k]=min(p[i][k],p[j-1][k-f[j][i]]+1);
	if(p[s.size()][n]!=INT_MAX/3)printf("%d",p[s.size()][n]-1);
	else printf("-1"); 
}

对了1和8,这个程序哪儿错了?

2022/10/23 21:32
加载中...