⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 load.cpp

📁 内有5个常用算法
💻 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 + -