基于visual Studio2013解决C语言竞赛题之1089牛虎过河
生活随笔
收集整理的這篇文章主要介紹了
基于visual Studio2013解决C语言竞赛题之1089牛虎过河
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
題目
解決代碼及點(diǎn)評(píng)
/************************************************************************/ /* 89. 牛虎同渡問(wèn)題。 三只牛和三只虎渡河,船只能容1至2只牛和虎(牛和虎各一只、單獨(dú)一只牛或虎、或兩只同類(lèi))。 任一岸邊若虎多于牛則虎會(huì)吃牛,問(wèn)怎樣才能使牛不被傷害而安全過(guò)河。 */ /************************************************************************/ #include <stdio.h> #include <stdlib.h> static int num=0; bool IsSafe89(int *arr) {if (arr[1]!=0&&arr[0]!=0&&arr[0]<arr[1]){return false;}elsereturn true; } void printfarr89(int *arr) {for (int i=0;i<3;i++){printf("%5d",arr[i]);} } //i=0 代表1牛一虎 1代表 一牛 2 代表 1虎 3代表 二牛 4 代表 二虎 bool Move(int *farr,int*tarr,int h,int zs)//h表示方向 1表示A-B 0 表示B-A zs 表示這次送過(guò)去的標(biāo)號(hào) { bool isfound=false; if (h&&tarr[0]==3&&tarr[1]==3||!h&&farr[0]==3&&farr[1]==3) {printf("結(jié)束了");printf("\n\n\n\n\n");isfound=true;} else {for (int i=0;i<5;i++){ if (i==zs)continue;#pragma region 條件匹配if (i==0){if (farr[0]>=1&&farr[1]>=1){farr[0]--;farr[1]--;tarr[0]++;tarr[1]++;}elsecontinue;}if (i==1){if (farr[0]>=1){farr[0]--;tarr[0]++;}elsecontinue;}if (i==2){if (farr[1]>=1){farr[1]--;tarr[1]++;}elsecontinue;}if (i==3){if (farr[0]>=2){farr[0]=farr[0]-2;tarr[0]=tarr[0]+2;}elsecontinue;}if (i==4){if (farr[1]>=2){farr[1]=farr[1]-2;tarr[1]=tarr[1]+2;}elsecontinue;} #pragma endregion 條件匹配if (h==0){printf("反反");}printf("移動(dòng)%d\n",i);if (IsSafe89(farr)){if (IsSafe89(tarr)&&h){isfound= Move(farr,tarr,h,i);}else {isfound=Move(tarr,farr,!h,i);}if (!isfound){ #pragma region 條件匹配1if (i==0){farr[0]++;farr[1]++;tarr[0]--;tarr[1]--;}if (i==1){farr[0]++;tarr[0]--;}if (i==2){farr[1]++;tarr[1]--;}if (i==3){farr[0]=farr[0]+2;tarr[0]=tarr[0]-2;}if (i==4){farr[1]=farr[1]+2;tarr[1]=tarr[1]-2;} #pragma endregion 條件匹配1printf("不符合條件回退");}}else { #pragma region 條件匹配1if (i==0){farr[0]++;farr[1]++;tarr[0]--;tarr[1]--;}if (i==1){farr[0]++;tarr[0]--;}if (i==2){farr[1]++;tarr[1]--;}if (i==3){farr[0]=farr[0]+2;tarr[0]=tarr[0]-2;}if (i==4){farr[1]=farr[1]+2;tarr[1]=tarr[1]-2;} #pragma endregion 條件匹配1printf("不符合條件回退%d\n",i);}} } return isfound; } void main() { printf("i=0 代表1牛一虎 1代表 一牛 2 代表 1虎 3代表 二牛 4 代表 二虎\n"); int arr1[2]={3,3}; int arr2[2]={0,0}; Move(arr1,arr2,1,-1); printf("asdasfdsf");system("pause"); }代碼編譯以及運(yùn)行
由于資源上傳太多,資源頻道經(jīng)常被鎖定無(wú)法上傳資源,同學(xué)們可以打開(kāi)VS2013自己創(chuàng)建工程,步驟如下:
1)新建工程
2)選擇工程
3)創(chuàng)建完工程如下圖:
4)增加文件,右鍵點(diǎn)擊項(xiàng)目
5)在彈出菜單里做以下選擇
6)添加文件
7)拷貝代碼與運(yùn)行
程序運(yùn)行結(jié)果
代碼下載
http://download.csdn.net/detail/yincheng01/6681845
解壓密碼:c.itcast.cn
轉(zhuǎn)載于:https://www.cnblogs.com/new0801/p/6177397.html
總結(jié)
以上是生活随笔為你收集整理的基于visual Studio2013解决C语言竞赛题之1089牛虎过河的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 基于visual Studio2013解
- 下一篇: csuoj 1350: To Add W