1. 程式人生 > >【BFS】CODE[VS] 1226 倒水問題 (BFS+模擬)

【BFS】CODE[VS] 1226 倒水問題 (BFS+模擬)

這道題主要考察程式碼能力
模擬倒水的過程,結果因為碼力太弱,漏了兩種情況(x和y全倒入一個(x或y)不滿)
然後就沒有然後了

最近超喜歡壓程式碼怎麼破???

程式碼如下:

#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#include <queue>

const int maxn = 333;

using namespace std;

int x,y,z
; bool vis[maxn][maxn]; struct state{ int x,y,step; }; state f; queue<state>q; int bfs() { q.push(f); vis[f.x][f.y] = 1; while(q.size()) { f = q.front(); q.pop(); if(f.x == z|| f.y == z) return f.step;//最近超喜歡壓程式碼! if(f.x < x && vis[x
][f.y] == 0) { q.push((state){x,f.y,f.step+1}); vis[x][f.y] = 1;}//倒滿x if(f.y < y && vis[f.x][y] == 0) { q.push((state){f.x,y,f.step+1}); vis[f.x][y] = 1;}//倒滿y if(f.x && vis[0][f.y] == 0) { q.push((state){0,f.y,f.step+1}); vis[0][f.y] = 1;}//倒空x if(f.y && vis[f.x
][0] == 0) { q.push((state){f.x,0,f.step+1}); vis[f.x][0] = 1;}//倒空y if(f.x >= y-f.y && vis[f.x-(y-f.y)][y] == 0){ q.push((state) {f.x-(y-f.y),y,f.step+1}); vis[f.x-(y-f.y)][y] = 1;}//從x倒入y中填滿y if(f.y >= x-f.x && vis[x][f.y-(x-f.x)] == 0){ q.push((state) {x,f.y-(x-f.x),f.step+1}); vis[x][f.y-(x-f.x)] = 1;}//從y倒入x中填滿x if(f.x < y-f.y && vis[0][f.x+f.y] == 0) { q.push((state){0,f.x+f.y,f.step+1}); vis[0][f.x+f.y] = 1;}//全部x加入y if(f.y < x-f.x && vis[f.x+f.y][0] == 0) { q.push((state){f.x+f.y,0,f.step+1}); vis[f.x+f.y][0] = 1;}//全部y加入x } return -1; } int main() { scanf("%d%d%d",&x,&y,&z); int ans = bfs(); if(ans != -1) { printf("%d\n",ans); return 0; } printf("impossible\n"); return 0; }

THE END

By Peacefuldoge

相關推薦

BFSCODE[VS] 1226 倒水問題 BFS+模擬

這道題主要考察程式碼能力 模擬倒水的過程,結果因為碼力太弱,漏了兩種情況(x和y全倒入一個(x或y)不滿) 然後就沒有然後了 最近超喜歡壓程式碼怎麼破??? 程式碼如下: #i

BFSCODE[VS] 2059 逃出克隆島奴隸島

魔獸系列題目第一彈 BFS典型例題,遇到傳送門只走一次且將走每一個傳送門的情況都搜一下,碰到終點直接退出輸出結果即可 PS:最近超喜歡壓行!我也不知道為什麼 #include <cstdio> #include <cstring&

ACMCODE[VS] 2806DFS

感覺有點入了DFS的門檻,距離完全掌握還差得遠呢 AC程式碼:執行時間為7ms #include <iostream> #include <cstdio> #include <cstring> using namespace std; const in

貪心CODE[VS] 1063 NOIP2004普及組-合併果子 刷題記錄模擬+優先佇列

日常水題 貪心策略:每次找代價最小的兩對合並,用小根堆來維護,每次合併之後將當前合併結果重新推入佇列,直到合併完成(n-1次) 程式碼如下 #include <cstdio>

ACMCODE[VS] 1215 (DFS)

題目描述 Description 在N*N的迷宮內,“#”為牆,“.”為路,“s”為起點,“e”為終點,一共4個方向可以走。從左上角((0,0)“s”)位置處走到右下角((n-1,n-1)“e”)位置處,可以走通則輸出YES,不可以走則輸出NO。 輸入描述 Input

POJ1979 Red and BlackBFS

Red and Black Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 44023 Accepted: 23850 Description There is a

POJ1704 Georgia and BobStaircase Nim

row over diff 題目 player 技術分享 需要 ber 排序。 Description Georgia and Bob decide to play a self-invented game. They draw a row of grids on pape

WC2001cogs358高性能計算機動態規劃

結束 輸入輸出 計算機 stdout 所有 主存 時間 span 要花 【WC2001】【cogs358】高性能計算機(動態規劃) ##題面 【問題描述】 現在有一項時間緊迫的工程計算任務要交給你——國家高性能並行計算機的主管工程師——來完成。為了盡可能充分發揮並行計算機的

BZOJbzoj1030[JSOI2007]文本生成器AC自動機

我們 acm ane mach () struct int log push 做到了AC自動機的題目,復習了一下AC自動機,學習了黃學長代碼,這個題呢,我們可以模擬在AC自動機上的操作,dp數組f[i][j]表示前i個字符,我們在AC自動機上處在j號節點的方案數。 我們可

Bsoj2684鋸木廠選址斜率優化

任務 post def sin solution name line () des Description 從山頂上到山底下沿著一條直線種植了n棵老樹。當地的政府決定把他們砍下來。為了不浪費任何一棵木材,樹被砍倒後要運送到鋸木廠。木材只能按照一個方向運輸:朝山下運。山腳下有

題解平面最近點對加強版

double clas .org ace gpo bits scanf 簡單 name 洛谷P1429 很久以前就見過並想做的一道題…… 但大概是那個時候太蒻竟然一直不敢做呢,想想時間真的過得好快,從寫‘Hello World’到如今,其實也不過是短短的一個學期呀。 這道題

題解 bzoj4033: [HAOI2015]樹上染色* 動態規劃

規劃 math online 4.2 pro php 白色 AD truct bzoj4033,懶得復制,戳我戳我 Solution: 定義狀態\(dp[i][j]\)表示\(i\)號節點為根節點的子樹裏面有\(j\)個黑色節點時最大的貢獻值 然後我們要知道的就是子節點到

題解 bzoj1055: [HAOI2008]玩具取名 動態規劃

isp haoi2008 name div clas tro 規劃 pac att bzoj1055,懶得復制,戳我戳我 Solution: 區間動規(以後開始動規會在solution前面標註是啥動規 我覺的這道題挺難想了,但其實狀態定義了一下子就出來了(還是不行啊) 我

HDOJfind your present (2)思路題

利用 自己 names namespace pro ble get nbsp tdi find your present (2) 題意:找有唯一一個出現奇數次的數 思路:利用位異或。一個數異或自己本身是0; #include<stdio.h> int

在使用實體框架Entity Framework的應用中加入審計信息Audit trail跟蹤數據的變動

要求 date ted hang ng- tar () eat code 在一些比較重要的業務系統中,通常會要求系統跟蹤數據記錄的變動情況。系統要記錄什麽時間,什麽人,對那些信息進行了變動。 比較簡單的實現方式是在每個表中加入兩個字段CreatedBy和CreatedA

LOJ6053簡單的函數min_25篩

ios can long ring -s In IV Go else 題面 LOJ 題解 戳這裏 #include<iostream> #include<cstdio> #include<cstdlib> #include<cstr

PATB1042 字符統計20 分

lower int har string.h flag char s algorithm printf for /* 15分的題很簡單,但是自己寫的時候在輸入數據時沒有考慮好下標 另外有忘記了輸入字符時考慮是否有\n */ #include<stdio

PATB1029 舊鍵盤(20)20 分

如果 names for ++ code ace strlen true 輸入 #include<cstdio> #include<string.h> #include<ctype.h> char str1[81],str2[81]; u

PATB1019 數字黑洞 (20)20 分

names space arr urn res pre () amp int #include<stdio.h> #include<algorithm> using namespace std; bool cmp(int a,int b){

PAT1015 德才論 (25)25 分

clu 包括 準考證 printf 理論 代碼 print spa fin  1015 德才論 (25)(25 分) 宋代史學家司馬光在《資治通鑒》中有一段著名的“德才論”:“是故才德全盡謂之聖人,才德兼亡謂之愚人,德勝才謂之君子,才勝德謂之小人。凡取人之術,茍不得聖人,君