第六次訓練 H題

2021-09-10 05:07:53 字數 910 閱讀 6698

問題簡述:

可樂的體積為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...