問題簡述:
可樂的體積為s,同時有容量m,n(s=n+m)的兩個杯子,三個容器間可相互倒可樂,問能否得到兩杯體積相等的可樂,若能,則輸出最短步驟數。
問題分析:
遵循無刻度的倒水原則,s為奇數時必然不行,可以先剪枝剪掉。而三個杯子的倒水方向可以有6種,可以使用bfs向六個方向搜尋,尋找最短路徑,當三個容器中兩杯可樂體積一致,且另一杯為空時,可視為已經平分。
#include#include#include#include#include#include#include#includeusing namespace std;
int s,n,m;
bool vis[105][105][105];
struct node;
int bfs()
q.pop();
if((p2.s==p2.m&&p2.s==half)||(p2.s==p2.n&&p2.s==half)||(p2.n==p2.m&&p2.n==half))
if(p2.s&&p2.n!=n)
}else
}} if(p2.s&&p2.m!=m)
}else
} } if(p2.n&&p2.s!=s)
}else
}} if(p2.n&&p2.m!=m)
}else
} } if(p2.m&&p2.s!=s)
}else
}} if(p2.m&&p2.n!=n)
}else
}} }
return -1;
}int main()
memset(vis,0,sizeof(vis));
int ans=bfs();
if(ans==-1)
else
}}
第六次訓練 J題
問題簡述 有一塊草坪長為l,寬為w,同時有n個噴頭,給出噴頭的位置 距離草坪左端的距離 與噴頭噴灑的範圍,問噴頭的範圍能否覆蓋整塊草坪,若能,輸出要開的最少噴頭數,若不能,輸出 1。問題分析 典型的區間覆蓋問題。但該問題為二維問題,難度在於如何將二維問題轉化為一維問題,從而用簡單的一維區間覆蓋解決問...
第六次作業
姓名 陳裕坤 學號 120705213 班級 12電信2班 作業1 總結,到目前為止,c語言基礎知識已介紹完,下一階段重點是指標。請從以下幾個方面小結 1.程式設計重在實踐,多程式設計才會對其理解更深,我是如何學習c語言的?2.程式設計涉及到方方面面知識,就像英語單詞一樣,一開始不可能了解每個c元素...
第六次作業
一 問題及 檔名稱 2.cpp 作 者 劉澤 完成日期 2017年5月18日 版 本 號 v1.0 對任務的求解方法及描述部分 輸入描述 問題描述 定義乙個不重複的有初值的10個元素的整數陣列a,利用冒泡法對陣列a排序 1 刪除x 2 插入x 程式輸出 問題分析 用迴圈結構進行編寫 演算法設計 in...