📄 load.cpp
字号:
#include <stdio.h>
#define max 100
int c1,c2,n;
int tag[max],arr[max],sum=0,s=0,flag=0,b;
void sort(int a[],int m)
{
int i,j,t,tag1=1;
for(i=0;i<m-1&&tag1==1;i++)
{
tag1=0;
for(j=0;j<m-i-1;j++)
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
tag1=1;
}
}
}
void outprint(int x)
{
if(x!=0)
return;
flag++;
int i;
printf("第一个艘轮船应该装:\n");
for(i=0;i<n;i++)
{
if(tag[i]==1)
printf("%d ",arr[i]);
}
printf("\n");
printf("第二个艘轮船应该装:\n");
for(i=0;i<n;i++)
{
if(tag[i]==0)
printf("%d ",arr[i]);
}
printf("\n");
}
void execute(int i)
{
int j;
for(j=0;j<n;j++)
{
if(tag[j]==0)
{
tag[j]=1;
s=s+arr[j];
if(i-arr[j]>=0)
execute(i-arr[j]);
else
{
if(sum-s+arr[j]<=c2)
{
tag[j]=0;
outprint(b);
b++;
}
}
tag[j]=0;
s=s-arr[j];
}
}
}
void main()
{
scanf("%d%d%d",&c1,&c2,&n);
int i;
for(i=0;i<n;i++)
{
scanf("%d",&arr[i]);
}
for(i=0;i<n;i++)
sum=sum+arr[i];
sort(arr,n);
if(sum>c1+c2)
printf("无解!");
else{
execute(c1);
if(flag==0)
printf("无解!");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -