| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 998 人关注过本帖
标题:[求助]高手们帮忙看看
取消只看楼主 加入收藏
他们
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2005-3-22
收藏
 问题点数:0 回复次数:2 
[求助]高手们帮忙看看
        四名商人各带一个随从乘船渡河,一只小船只能容纳二人,由他们自己划行。随从们密约,在河的任一岸,一旦随从的人数比商人多,就杀人越货。但是如何乘船渡河的大权掌握在商人们手中。商人们怎样才能安全渡河呢?
搜索更多相关主题的帖子: 安全 如何 
2005-11-07 19:12
他们
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2005-3-22
收藏
得分:0 

2楼的,没你说的这么简单.

这是我在网上找的别人写好的.大家看看.

#include <stdio.h>
int N;
int num=0;
int S[100][2];
int fit=0;
int p;
int q;

int check(int m,int n,int u,int v,int total)
{
int i;

if(total%2==0)
{
u=u-m;
v=v-n;

}
else {
u=u+m;
v=v+n;
}
for(i=0;i<total+1;i++)
{

if((u==S[i][0])&&(v==S[i][1])&&((total+1)%2==i%2))
{
return 0;}
}
if((u==0)&&(v==0))
return 2;
else
{
if(u<0||v<0||(N-u)<0||(N-v)<0)
{

return 0;}
if((u==v)||(u==0)||u==N)
return 1;
else
{
return 0; }
}

}

void act(int total,int u,int v)
{

int i;
int j;
int a=0;
int flag=0;

if(total>num)
{
num=total;
}
for(i=0;i<=p;i++)
{
for(j=0;j<=q;j++)
{
if((i==0)&&(j==0))
continue;
if((i+j)<=2)
{flag=check(i,j,u,v,total);

if(flag==2)
{
printf("\n");
for(a=0;a<total+1;a++)
printf("(%d,%d)->",S[a][0],S[a][1]);
printf("(0,0)");
fit=1;
return;

}
else if(flag)
{

if(total%2==0)
{
S[total+1][0]=u-i;
S[total+1][1]=v-j;
act(total+1,u-i,v-j);
}
else
{
S[total+1][0]=u+i;
S[total+1][1]=v+j;
act(total+1,u+i,v+j);
}
}
}
}
}
S[total][0]=0;
S[total][1]=0;

}

main()
{
printf("please enter the num:");
scanf("%d",&N);
printf("please enter the capacity of mercher:");
scanf("%d",&p);
printf("please enter the capacity of salave:");
scanf("%d",&q);
S[0][0]=N;
S[0][1]=N;
act(0,N,N);
if(fit==0)
printf("There is no proporate answer.");
getch();
}


2005-11-07 20:30
他们
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2005-3-22
收藏
得分:0 

他们的学生,好呀。以后常来呀。我喜欢这里。


2005-11-12 16:35
快速回复:[求助]高手们帮忙看看
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011941 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved