求标程

P1415 拆分数列

@[url=/space/show?uid=6210]sqc1999[/url] [codec] ```cpp #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> using namespace std; int f[505],n,i,j,k,l; char s[505],a[505],b[505]; int cmp(int x1,int y1,int x2,int y2) { memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); for(;s[x1]=='0'&&x1<y1;x1++); for(;s[x2]=='0'&&x2<y2;x2++); copy(s+x1,s+y1+1,a); copy(s+x2,s+y2+1,b); if(y1+x2!=y2+x1)if(y1+x2<y2+x1)return -1; else return 1; else return strcmp(a,b); } int main() { cin>>s+1; n=strlen(s+1); for(i=1;i<=n;i++)for(j=i;j;j--)if(cmp(f[j-1],j-1,j,i)==-1) { f[i]=j; break; } for(f[f[n]]=n,i=f[n]-1;i&&s[i]=='0';i--)f[i]=n; for(;i;i--)for(j=f[n]-1;j>=i;j--)if(cmp(i,j,j+1,f[j+1])==-1) { f[i]=j; break; } for(i=1;i<=n;i=j,i<=n?putchar(','):i++)for(j=i;j<=f[i];j++)putchar(s[j]); return 0; } [/codec] ```
by kkksc03 @ 2015-04-12 11:22:26


谢谢
by sqc1999 @ 2015-04-12 11:32:36


谢谢
by sqc1999 @ 2015-04-12 11:34:41


@[url=/space/show?uid=6210]sqc1999[/url] 这题有题解的。题目页左边--查看题解
by lzn @ 2015-04-13 14:57:02


@[url=/space/show?uid=2]lzn[/url] 我知道有题解,就是照着题解做的,可是交上去过不了,所以才想要标程对照一下,最后发现是一个变量名错了。。
by sqc1999 @ 2015-04-13 15:14:00


|