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

📄 csx.c

📁 四人过河求时间最短问题
💻 C
字号:
/*四人过河求时间最短问题*/
/*先将是个人过河所需时间按从小到大排序x0<=x1<=x2<=x3*/
/*该问题存在两种求最优路径方法*/
/*当2*x1-x2<=1时*/
/*可用方法一求得最短路径*/
/*否则用方法二求最优路径*/
#include<math.h>
void main()
{
	int	M[4],N[4]={0,0,0,0},i,j=0,k=0,mm=0;
	int hn=0,a,b,cc,aa,nn;

	printf("\nInput arry M[4]:\n\n");
	scanf("%d,%d,%d,%d",&M[0],&M[1],&M[2],&M[3]);
	printf("\n");
	for(i=0;i<4;i++)
		printf("%d   ",M[i]);
	printf("\n");
	for(i=0;i<4;i++)                    /*排序*/
		printf("%d   ",M[i]);
	for(i=0;i<3;i++)
	{
		j=i;
		while((j>-1)&&(M[j]>M[j+1]))
		{
			aa=M[j];
			M[j]=M[j+1];
			M[j+1]=aa;
			j--;
		}
	}
	printf("\n\n");
	for(i=0;i<4;i++)
		printf("%d   ",M[i]);                 /*排序*/


	printf("\n\nArry N[4]:\n\n");
	printf("\n");
	for(i=0;i<4;i++)                  
		printf("%d   ",N[i]);
	printf("\n");	
	cc=M[0]+M[1];
    printf("\n\n%d,%d,%d__%d\n",M[0],M[1],M[0],cc);
	N[3]=M[0];
	M[0]=0;	

	if(2*M[1]-M[2]<=1)                    /*当2*x1-x2<=1时*//*可用方法一求得最短路径*/
	{					
loop:
		for(i=0;i<3;i++)        /*M排序*/
	{
		j=i;
		while((j>-1)&&(M[j]>M[j+1]))
		{
			aa=M[j];
			M[j]=M[j+1];
			M[j+1]=aa;
			j--;
		}
	}
		a=M[3];
		M[3]=0;
		b=M[2];
		M[2]=0;
		for(i=0;i<3;i++)        /*N排序*/
	{
		j=i;
		while((j>-1)&&(N[j]>N[j+1]))
		{
			aa=N[j];
			N[j]=N[j+1];
			N[j+1]=aa;
			j--;
		}
	}		
		hn=M[0]+M[1]+M[2]+M[3];					
		if(N[0]!=0)mm=N[0];
		else if(N[1]!=0)mm=N[1];
		else if(N[2]!=0)mm=N[2];
		else if(N[3]!=0)mm=N[3];
		for(i=0;i<3;i++)
		{
			if(N[i]!=mm);
			else N[i]=0;
		}
		if(hn>0)
		{
			cc=cc+a+mm;
			M[0]=mm;
			printf("\n%d,%d,%d__%d\n",a,b,M[0],cc);
		}
		else
		{
		cc=cc+a;
		printf("\n%d,%d,%d__%d\n",a,b,M[0],cc);
		M[0]=mm;
		}
		if(hn==0)return;
		else goto loop;
	}
	else                     /*当2*x1-x2>1时*//*可用方法二求得最短路径*/
	{
		if(N[0]!=0)mm=N[0];
		else if(N[1]!=0)mm=N[1];
		else if(N[2]!=0)mm=N[2];
		else if(N[3]!=0)mm=N[3];
		for(i=2;i<3;i++)
		{
			cc=cc+mm+M[i];
			printf("\n\n%d,%d,%d__%d",mm,M[i],mm,cc);
		}
		while(i=3)
		{
			nn=0;
			cc=cc+M[i];
			printf("\n\n%d,%d,%d__%d",mm,M[i],nn,cc);
			break;		
		}
	}		/*CrossRiver2(M[4],N[4]);*/;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -