基于visual Studio2013解决C语言竞赛题之1079狼羊过河

来源:互联网 发布:好听的淘宝会员名女 编辑:程序博客网 时间:2024/05/19 18:47






题目


解决代码及点评

/************************************************************************//* 79.猎人过河。猎人要把一只狼,一头羊和一些白菜从河的左岸带到右岸,但他的船太小,一次只能带一样,因为狼要吃羊,羊会吃白菜,所以狼和羊,羊和白菜不能在无人监视的情况下相处,问猎人怎样才能达到目的? 请编程序实现猎人过河。*//************************************************************************/#include <stdio.h>#include <stdlib.h>static int num=0;bool IsSafe(int *arr){if (arr[0]==1&&arr[1]==1||arr[1]==1&&arr[2]==1){return false;}elsereturn true;}void  printfarr79(int *arr){for (int i=0;i<3;i++){printf("%5d",arr[i]);}}bool flag=0;//定义结束标志voidMove(int *farr,int*tarr,int h,int zs)//h表示方向 1表示A-B  0 表示B-A zs 表示这次送过去的标号{if (h&&tarr[3]==3||!h&&farr[3]==3){printf("结束了");flag=1;return;}else if(flag==0){for (int i=0;i<3;i++){if (flag==1)break;if (i==zs)continue;if (farr[i]==0){continue;}farr[i]=0;farr[3]--;tarr[i]=1;tarr[3]++;printf("移动%d\n",i);if (IsSafe(farr)){if (IsSafe(tarr)&&h&&(!flag)){Move(farr,tarr,h,i);}else if(!flag){Move(tarr,farr,!h,i);}}else if (flag==0){farr[i]=1;farr[3]++;tarr[i]=0;tarr[3]--;printf("不符合条件回退%d\n",i);}}}}void main(){printf("0代表菜 1代表羊 2 代表狼");int arr1[4]={1,1,1,3};int arr2[4]={0};Move(arr1,arr2,1,-1);printf("asdasfdsf");system("pause");}



代码编译以及运行

由于资源上传太多,资源频道经常被锁定无法上传资源,同学们可以打开VS2013自己创建工程,步骤如下:

1)新建工程

2)选择工程

3)创建完工程如下图:

4)增加文件,右键点击项目

5)在弹出菜单里做以下选择

6)添加文件

7)拷贝代码与运行


程序运行结果


代码下载

http://download.csdn.net/detail/yincheng01/6681845

密码:c.itcast.com





0 0