題目1457:非常可樂(廣度優先遍歷BFS)

題目鏈接:http://ac.jobdu.com/problem.php?pid=1457

詳解鏈接:https://github.com/zpfbuaa/JobduInCPlusPlus

參考代碼:

//
//  1457 非常可樂.cpp
//  Jobdu
//
//  Created by PengFei_Zheng on 22/04/2017.
//  Copyright ? 2017 PengFei_Zheng. All rights reserved.
//
 
#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <string.h>
#include <cmath>
#include <queue>
#define MAX_SIZE 101
using namespace std;int s, n, m;struct N{int a;int b;int c;int t;
};queue<N> myQueue;
bool visit[MAX_SIZE][MAX_SIZE][MAX_SIZE];void x2y(int &x,int size_x, int &y,int size_y){if(size_y - y >= x){y+=x;x = 0;}else{x -=(size_y-y);y = size_y;}
}int BFS(int s, int n, int m){while(!myQueue.empty()){N nowP = myQueue.front();myQueue.pop();int a, b, c;a = nowP.a;b = nowP.b;c = nowP.c;x2y(a,s,b,n);// a--->bif(visit[a][b][c]==false){visit[a][b][c]=true;N tmp;tmp.a = a;tmp.b = b;tmp.c = c;tmp.t = nowP.t+1;if((a==s/2 && b==s/2) || (a==s/2 &&c==s/2) || (b==s/2 && c==s/2) ) return tmp.t;myQueue.push(tmp);}a = nowP.a;b = nowP.b;c = nowP.c;x2y(a,s,c,m);// a--->cif(visit[a][b][c]==false){visit[a][b][c]=true;N tmp;tmp.a = a;tmp.b = b;tmp.c = c;tmp.t = nowP.t+1;if((a==s/2 && b==s/2) || (a==s/2 &&c==s/2) || (b==s/2 && c==s/2) ) return tmp.t;myQueue.push(tmp);}a = nowP.a;b = nowP.b;c = nowP.c;x2y(b,n,a,s);// b--->aif(visit[a][b][c]==false){visit[a][b][c]=true;N tmp;tmp.a = a;tmp.b = b;tmp.c = c;tmp.t = nowP.t+1;if((a==s/2 && b==s/2) || (a==s/2 &&c==s/2) || (b==s/2 && c==s/2) ) return tmp.t;myQueue.push(tmp);}a = nowP.a;b = nowP.b;c = nowP.c;x2y(b,n,c,m);// b--->cif(visit[a][b][c]==false){visit[a][b][c]=true;N tmp;tmp.a = a;tmp.b = b;tmp.c = c;tmp.t = nowP.t+1;if((a==s/2 && b==s/2) || (a==s/2 &&c==s/2) || (b==s/2 && c==s/2) ) return tmp.t;myQueue.push(tmp);}a = nowP.a;b = nowP.b;c = nowP.c;x2y(c,m,a,s);// c--->aif(visit[a][b][c]==false){visit[a][b][c]=true;N tmp;tmp.a = a;tmp.b = b;tmp.c = c;tmp.t = nowP.t+1;if((a==s/2 && b==s/2) || (a==s/2 &&c==s/2) || (b==s/2 && c==s/2) ) return tmp.t;myQueue.push(tmp);}a = nowP.a;b = nowP.b;c = nowP.c;x2y(c,m,b,n);// c--->bif(visit[a][b][c]==false){visit[a][b][c]=true;N tmp;tmp.a = a;tmp.b = b;tmp.c = c;tmp.t = nowP.t+1;if((a==s/2 && b==s/2) || (a==s/2 &&c==s/2) || (b==s/2 && c==s/2) ) return tmp.t;myQueue.push(tmp);}}return -1;
}int main(){while(scanf("%d%d%d",&s,&n,&m)!=EOF){if(s==0) break;if(s%2==1){printf("NO\n");continue;}for(int i = 0 ; i <= s ; i++){for(int j = 0 ; j <= n ; j++){for(int k = 0 ; k <= m ; k++){visit[i][j][k]=false;}}}while(!myQueue.empty()) myQueue.pop();N tmp;tmp.a = s;tmp.b = tmp.c = tmp.t = 0;myQueue.push(tmp);visit[s][0][0]=true;int ans = BFS(s,n,m);ans == -1 ? printf("NO\n") : printf("%d\n",ans);}
}
/**************************************************************Problem: 1457User: zpfbuaaLanguage: C++Result: AcceptedTime:10 msMemory:2528 kb
****************************************************************/

?

轉載于:https://www.cnblogs.com/zpfbuaa/p/6750319.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/372334.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/372334.shtml
英文地址,請注明出處:http://en.pswp.cn/news/372334.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

mysql查詢某張表的所有外鍵_oracle中查詢所有外鍵引用到某張表的記錄

歡迎進入Oracle社區論壇&#xff0c;與200萬技術人員互動交流 >>進入 oracle中查詢所有外鍵引用到某張表的記錄 //查詢表的主鍵約束名 select * from user_constraints e where e.table_name表名;--輸入 //查詢所有引用到該主鍵的記錄 select b.table_name,b.column_歡迎…

BTrace for Java應用程序簡介

本文的目的是學習如何使用BTrace動態跟蹤/觀察正在運行的Java應用程序&#xff08;JDK 6&#xff09;&#xff0c;而無需更改應用程序的代碼和配置參數。 什么是BTrace&#xff1f; BTrace是一個開源項目&#xff0c;始于2007年&#xff0c;最初由A.Sundararajan和K.Balasubra…

叢銘俁 160809324 (作業1)

老師&#xff0c;助教好&#xff01;我是計科3班的叢銘俁&#xff0c;我的性格陽光開朗&#xff0c;待人大方友善&#xff0c;凡事不喜歡斤斤計較&#xff1b;本人熱心&#xff0c;喜歡樂于助人&#xff0c;也喜歡和積極向上的人交朋友。最喜歡打羽毛球&#xff0c;其次是籃球&…

mysql死鎖分析_MySQL死鎖分析

熟悉或者了解數據庫的朋友都知道鎖的概念&#xff0c;這里不做過多的解析&#xff01;鎖的種類有很多&#xff0c;不同數據庫的鎖管理方式也不同。這里主要談下MySQL innodb引擎下的死鎖。死鎖通俗的來講就是2個事務相互請求對方持有的鎖&#xff0c;這樣就會造成2個事務相互等…

在Akka中實現主從/網格計算模式

主從模式是容錯和并行計算的主要示例。 模式背后的想法是將工作劃分為相同的子任務&#xff0c;然后將其委派給從屬。 這些從節點或實例將處理工作任務&#xff0c;并將結果發送回主節點。 然后主節點將編譯從所有從節點接收到的結果。關鍵是從節點僅知道如何處理任務&#xff…

java學習筆記總略

二、正文&#xff08;一&#xff09;Java1.接口和抽象類的區別①抽象類里可以有構造方法&#xff0c;而接口內不能有構造方法。②抽象類中可以有普通成員變量&#xff0c;而接口中不能有普通成員變量。③抽象類中可以包含非抽象的普通方法&#xff0c;而接口中所有的方法必須是…

react實現路由跳轉_react實現hash路由

眾所周知&#xff0c;目前單頁面使用的路由有兩種實現方式&#xff1a;hash 模式history 模式hash 模式路由原理&#xff1a;我們先來看hash模式&#xff0c;頁面首次加載時需要在load事件中解析初始的URL&#xff0c;從而展示進入的頁面。當 # 后面的哈希值發生變化時&#xf…

Java中的Google協議緩沖區

總覽 協議緩沖區是一種用于結構化數據的開源編碼機制。 它是由Google開發的&#xff0c;旨在實現語言/平臺中立且可擴展。 在本文中&#xff0c;我的目的是介紹Java平臺上下文中協議緩沖區的基本用法。 Protobuff比XML更快&#xff0c;更簡單&#xff0c;并且比JSON更緊湊。 當…

匈牙利哦模板 二分匹配 完全匹配問題

匈牙利算法的核心思想就是 騰空間, 有條件 創造,沒條件也要創造! bool find(int x){int i,j;for (j1;j<m;j){ //掃描每個被匹配的人 if (line[x][j]true && used[j]false) //如果有關系并且還沒有標記過(這里標記的意思是這次查找曾試圖改變過的歸屬問題&a…

ThinkPHP 中驗證碼的看不清切換

<!--HTML頁面--> <!DOCTYPE html><html><head> <title></title></head><body><script type"text/javascript" src"__PUBLIC__/js/jquery-1.8.2.min.js"></script><form action"{:U(H…

mysql從表截取信息_mysql中循環截取用戶信息并插入到目標表對應的字段中

操作環境&#xff1a;有表game_list&#xff0c;字段&#xff1a;uid&#xff0c;score1&#xff0c;score2&#xff0c;seat_id&#xff0c;last_update&#xff1b;傳入參數為i_player_detail &#xff0c;傳入的值為多個用戶的id、之前分數、之后分數、座位號&#xff0c;每…

Java中的數組,列表,集合,映射,元組,記錄文字

有時&#xff0c;當我對JavaScript的強大功能和表現力感到興奮時&#xff0c;我發現自己錯過了Java世界中的一兩個功能。 除了lambda表達式/閉包或任何您想稱為“匿名函數”的東西之外&#xff0c;它還對數組&#xff0c;數組&#xff0c;列表&#xff0c;集合&#xff0c;映射…

mysql鎖表問題的解決方法_MYSQL鎖表問題的解決方法

本文實例講述了MYSQL鎖表問題的解決方法。分享給大家供大家參考&#xff0c;具體如下&#xff1a;很多時候&#xff01;一不小心就鎖表&#xff01;這里講解決鎖表終極方法&#xff01;案例一mysql>show processlist;參看sql語句一般少的話mysql>kill thread_id;就可以解…

linux——(1)初識linux

linux有窗口管理員環境和純文本界面環境&#xff0c;同時linux默認提供6個Terminal來讓用戶登錄。crtlaltF1-6可自由切換。其中如果窗口管理員環境處于運行狀態&#xff0c;那么可以按crtlaltF7直接切過去。 常用命令&#xff1a; cd [dir] #進入dir目錄下 ls #列出當前目錄下的…

4.26學習成果

哇&#xff0c;今天終于開始接觸Web了&#xff0c;感覺有點小興奮&#xff0c;這幾天看來那個視頻感覺挺有趣的&#xff0c;挺奇妙的。看到人家敲代碼&#xff0c;感覺好厲害。但是感覺不懂&#xff0c;所以&#xff0c;要努力學習了。 今天的學習成果&#xff1a; 網頁由什么組…

將Glassfish 3連接到外部ActiveMQ 5代理

介紹 在ONVZ&#xff0c;我們將Glassfish 3用作開發和生產應用服務器&#xff0c;我們對其性能和穩定性以及周圍的廣大社區感到非常滿意。 我很少遇到在stackoverflow或java.net上沒有匹配解決方案的問題。 作為我們開源策略的一部分&#xff0c;我們還運行了一個定制的ActiveM…

esp8266 lcd 天氣_ESP8266 顯示實時天氣信息

代碼文件getdata.h#include #include #include #include #include #include #include #define DEBUG 1#define MAX_CONTENT_SIZE 2000const char* ssid "weather";const char* password "mymymymy";WiFiClient client;HTTPClient http;char response[MAX…

【VS開發】visual studio 2015的NuGet Manager解決方案管理功能

NuGet的官方說明是&#xff1a;NuGet是一款Visual Studio的擴展&#xff0c;它可以簡單的安裝、升級開源庫和工具。 官網地址&#xff1a;http://www.nuget.org/ 官網最醒目的位置就是下載鏈接&#xff0c;安裝完成后我們來快速體驗一把。 手上有個小項目需要使用到json格式&am…

五. 面向對象高級特性4. 接口的概念和使用

在抽象類中&#xff0c;可以包含一個或多個抽象方法&#xff1b;但在接口(interface)中&#xff0c;所有的方法必須都是抽象的&#xff0c;不能有方法體&#xff0c;它比抽象類更加“抽象”。接口使用 interface 關鍵字來聲明&#xff0c;可以看做是一種特殊的抽象類&#xff0…

智能配料

我們都有多少次聽說“分批處理”會增加延遲&#xff1f; 作為對低延遲系統充滿熱情的人&#xff0c;這讓我感到驚訝。 以我的經驗&#xff0c;正確完成批處理不僅可以提高吞吐量&#xff0c;還可以減少平均延遲并保持一致。 那么&#xff0c;批處理如何神奇地減少延遲呢&#x…