日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > c/c++ >内容正文

c/c++

c++ 宽搜(倒水)

發(fā)布時(shí)間:2025/5/22 c/c++ 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++ 宽搜(倒水) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

題目描述

有一個(gè)很大的水缸和二個(gè)容量分別為X和Y的水壺,按照以下的規(guī)則倒水,問(wèn)最少經(jīng)幾次倒水后,可得到Z升水
規(guī)則1:水缸向水壺1倒水,將水壺1裝滿;
規(guī)則2:水缸向水壺2倒水,將水壺2裝滿;
規(guī)則3:水壺1向水缸倒水,直到水壺1空;
規(guī)則4:水壺2向水缸倒水,直到水壺2空;
規(guī)則5:水壺1向水壺2倒水,直到水壺1空了或者水壺2滿了;
規(guī)則6:水壺2向水壺1倒水,直到水壺2空了或者水壺1滿了;

輸入

只有一行數(shù)據(jù),包括以空格分隔的三個(gè)數(shù)字,分別表示水壺1( <= 100)、 水壺2的水量( <= 100 )以及期望得到的水量( <=100 )。

輸出

若經(jīng)若干次倒水能得到所要求的水量,則輸出最少的倒水次數(shù);若無(wú)論如何倒水都無(wú)法得到規(guī)定的水量,則輸出No Solution!

樣例輸入

4 3 1

樣例輸出

2

AC代碼

#include <iostream> #include <string.h> using namespace std; struct point //結(jié)構(gòu)體 {int x, y, step; }; bool used[101][101]; point q[20000], s; int xx, yy, t; int f = 1, e = 1; point gen(point u, int cc)//嘗試枚舉每一個(gè)規(guī)則 {point v = u;v.step = u.step + 1;//開(kāi)始枚舉規(guī)則if (cc == 1) v.x = xx;//水缸向水壺1倒水,將水壺1裝滿else if (cc == 2) v.y = yy;//水缸向水壺2倒水,將水壺2裝滿else if (cc == 3) v.x = 0;//水壺1向水缸倒水,直到水壺1空else if (cc == 4) v.y = 0;//水壺2向水缸倒水,直到水壺2空else if (cc == 5)//水壺1向水壺2倒水,直到水壺1空了或者水壺2滿了{(lán)if (u.x + u.y <= yy) v.x = 0, v.y = u.x + u.y;//如果y能把x和y的水量都裝下else v.y = yy, v.x = u.x + u.y - yy;//y裝不下從x倒過(guò)來(lái)的水}else//水壺2向水壺1倒水,直到水壺2空了或者水壺1滿了{(lán)if (u.x + u.y <= xx) v.y = 0, v.x = u.x + u.y;//如果x能把x和y的水量都裝下else v.x = xx, v.y = u.x + u.y - xx;//x裝不下從y倒過(guò)來(lái)的水}return v; } int main() {scanf ("%d %d %d", &xx, &yy, &t);//xx是x桶的水量,yy是y桶的水量if (t == 0){printf ("0\n");return 0;}memset (used, 0, sizeof (used));//memsets.x = 0, s.y = 0, s.step = 0;q[1] = s; ///開(kāi)始寬搜///while (f <= e)//f是出隊(duì)下標(biāo) e是入隊(duì)下標(biāo){point u = q[f++];//選定的元素for (int i = 1; i <= 6; i++)//嘗試枚舉6個(gè)規(guī)則{point v = gen(u, i);//v就是將要入隊(duì)的元素if (used[v.x][v.y] == 0){if (v.x == t || v.y == t)//任意一個(gè)杯子里面有目標(biāo)水量{printf ("%d\n", v.step);//就打印步數(shù)return 0;//默默退出}q[++e] = v;//入隊(duì)used[v.x][v.y] = 1;//表示已經(jīng)被選擇過(guò)}}}printf ("No Solution!\n");//如果無(wú)法完成return 0; }

思路分析

step1:將初始狀態(tài)入隊(duì)
step2:以初始狀態(tài)為中心按6個(gè)規(guī)則向6個(gè)方向?qū)ふ铱赡艿闹等腙?duì)
step3:在通過(guò)可能的值向6個(gè)方向繼續(xù)拓展,直到找到目標(biāo)(水壺1 或 水壺2 中的水 等于目標(biāo)水量)

轉(zhuǎn)載于:https://www.cnblogs.com/LJA001162/p/11218432.html

總結(jié)

以上是生活随笔為你收集整理的c++ 宽搜(倒水)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩在线视频在线 | 国产日韩一区二区在线 | 污污网站在线免费观看 | wwwwww国产 | 麻豆影视大全 | 人人妻人人澡人人爽精品 | 亚洲涩涩涩 | 隣の若妻さん波多野结衣 | 亚洲熟悉妇女xxx妇女av | 国产鲁鲁视频在线观看特色 | 精品一区在线视频 | 日韩18p| 欧美乱做爰xxxⅹ久久久 | 日本三级一区二区 | 91吃瓜今日吃瓜入口 | 免费av入口 | 国产精品99久久久久久www | 麻豆视频免费版 | 久久久久久久久久久丰满 | 特黄aaaaaaaaa毛片免费视频 | 日韩欧美国产高清 | 亚洲在线色 | 亚洲偷偷自拍 | 国产成人激情视频 | 成年人一级黄色片 | 欧美a√| 狠狠躁日日躁 | 国产超碰人人模人人爽人人添 | 美女裸体网站久久久 | 国产一级一区二区 | 亚洲精品久久久久中文字幕二区 | 欧美日韩激情视频在线观看 | 粉嫩av四季av绯色av | 欧美性一区二区三区 | 中文字幕+乱码+中文字幕一区 | av片免费看 | 国产综合在线播放 | 视频一区中文字幕 | 国产精选一区二区 | 国产精品高潮呻吟久久av黑人 | www天天操 | 国产人妖一区二区三区 | 国产精品秘 | 中文字幕欧美激情 | 国产a久久麻豆入口 | 一本视频| 桃色视频网| 驯服少爷漫画免费观看下拉式漫画 | 日本在线色 | 国产亚洲av片在线观看18女人 | 超级碰碰97 | 国产亚洲久一区二区 | 黄色网页免费在线观看 | 国产黑丝精品 | 性――交――性――乱 | 久久女同互慰一区二区三区 | 亚洲涩涩网 | 久久久无码精品亚洲无少妇 | 欧美日韩一区在线观看 | 国产老女人精品毛片久久 | 又色又爽又黄gif动态图 | 锕锕锕锕锕锕锕锕 | 哪里可以免费看av | www.com欧美| 性福利视频 | 国产成人在线免费视频 | 欧美aaaaaaaaa | 国产伦精品一区二区三区妓女下载 | 成人中文网 | 日韩美女少妇 | 日韩一级片免费观看 | 日韩精品电影在线观看 | 狠狠精品干练久久久无码中文字幕 | 精品国产免费无码久久久 | 国产精品1024| 久久99精品久久久久子伦 | 亚洲第一天堂久久 | 99re视频在线观看 | 黑人乱码一区二区三区av | 天天干女人 | 九色综合网 | 久草剧场| 精品国产一二三区 | 天天干干干干干 | www..99热 | 国产精品色综合 | 国产理论片在线观看 | 中国性xxx| 免费裸体视频网站 | 宅男深夜视频 | 森泽佳奈作品在线观看 | 操欧美女人| 久久久天堂国产精品女人 | 四虎色播| 美国黄色一级视频 | 亚洲一区二区三区四区在线 | www.毛片 | 亚洲性图第一页 | 青青草原在线免费观看视频 |