这个题目用C++过不了

#include<stdio.h>
#include<string>
#include<iostream>
using namespace std;
string s,b;
int f[70010]={0},g[70010],q[5000],n,m=0,v=0,r=0;
bool min(int& a,int b){ if(a>=b){ a=b; return 1; } return 0; }
int main(){
getline(cin,s); n=s.length();
for(int i=0;i<=n;f[++i]=1<<30)
for(int j=1;j*j<=i;++j)
if(j>=g[i-j*j]&&min(f[i],f[i-j*j]+1)) g[i]=j;
for(int i=n;i;i-=g[i]*g[i]) q[++v]=g[i];
for(int i=1;i<=v;++i){
for(int j=0;j<q[i];++j)
for(int k=0;k<q[i]*q[i];k+=q[i]) b+=s[r+j+k];
r+=q[i]*q[i];
}
cout<<b;
}

0 条评论

目前还没有评论...

信息

ID
1480
难度
7
分类
字符串 | 动态规划 | 背包 点击显示
标签
递交数
800
已通过
138
通过率
17%
被复制
5
上传者