题目链接
题目大意:给你一串数字,问你能不能把这一串数字分割成一块的数字的和都相等的片段,至少两片
思路:这个题目,当时也是没做出来吧,思路上面的话,就是把所有可能的答案都枚举一遍,
这个的话,之前是用的枚举前面几个,然后把前面几个的和加起来看看能不能到最后分片成功,
代码:
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;
const int maxn=100+10;
char str[maxn];
int a[maxn];
int main()
{
int n;
scanf("%d",&n);
scanf("%s",str);
int sum=0;
for(int i=1;i<=n;i++)
a[i]=str[i-1]-'0',sum+=a[i];
if(sum==0)
{
printf("YES\n");
return 0;
}
for(int i=1;i<sum;i++)
{
if(sum%i!=0) continue;
int cnt=0;
for(int j=1;j<=n;j++)
{
cnt+=a[j];
if(cnt==i)
{
cnt=0;
}
else if(cnt>i) break;
}
if(cnt==0)
{
printf("YES\n");
return 0;
}
}
printf("No\n");
}