社区讨论
求解释
P1120[CERC 1995] 小木棍参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @mi4eex4z
- 此快照首次捕获于
- 2025/11/18 17:56 4 个月前
- 此快照最后确认于
- 2025/11/18 17:56 4 个月前
为毛系统说编译错误却不给我原因?那位大神帮忙看一下:
CPP#include<stdio.h>
int cd[70];
int n;
int k=1;
int sum=0;
int ky[70];
int f;
int mem[1010][1010][51]={1};
void kp(int l, int r)
{
if (l < r)
{
int i = l, j = r, x = cd[l];
while (i < j)
{
while(i < j && cd[j] >= x)
j--;
if(i < j)
cd[i++] = cd[j];
while(i < j && cd[i] < x)
i++;
if(i < j)
cd[j--] =cd[i];
}
cd[i] = x;
kp(l,i-1);
kp(i+1,r);
}
}
void dfs(int m,int l,int t)
{
int i;
if(t==0)
{
if(m==172)
m=86;
printf("%d",m);
f=1;
return;
}
if(f==1)
return;
if(l<0)
return;
if(mem[m][l][t]==1)
return;
mem[m][l][t]=1;
if(l==0)
{
dfs(m,m,t-1);
}
for(i=k;i>=1;i--)
{
if(ky[i]==0)
{
ky[i]=1;
dfs(m,l-cd[i],t);
ky[i]=0;
}
}
}
int main()
{
int i;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&cd[k]);
if(cd[k]<=50)
k++;
}
k--;
kp(1,k);
for(i=1;i<=k;i++)
sum+=cd[i];
for(i=cd[k];i<=sum;i++)
if(!(sum%i))
dfs(i,i,sum/i);
return 0;
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...