這個問題比較有韻味,可以好好體會以下!!!
問題描述:
某人想在h小時內釣到數量最多的魚。這時他已經在一條路邊,從他所在的地方開始,放眼望去,n個湖一字排開,湖編號依次是1.2…n。他已經知道,從湖i走到湖i+1需要花5*ti分鐘;他在湖i釣魚,第乙個5分鐘可釣到數量為fi的魚,若他繼續在湖i釣魚,每過5分鐘,釣魚量將減少di。
請給他設計乙個最佳釣魚方案。
解決思想:
解決思想有一些貪心的思想,但主要還是暴力列舉
用lake[i]記錄以第 i 個湖結尾的方案,
lake中為結構體,記錄以此方案結尾所能獲得的最大魚數目:max,
以及用num[i]記錄從1~i釣魚,所待的時間
中心思想:先假設從湖1走到湖i,在這個前提下計算出在湖k所待的時間,然後在此基礎上求解最大釣魚數目
**中有非常詳細的注釋!!!
樣例:
2
1初始每個湖魚的個數:10 1
乙個時間間隔,魚減少的個數:2 5
最佳方案:
釣魚總數目:31
**:
#includeusing namespace std;
#define max 20
int n; //湖的個數
int h; // 時間
int max_values=0; //記錄活得最大魚的數目 的方案,是以角標i結尾的
int ti[max]; //i~i+1花費時間
int fi[max]; //初始每個湖魚個數
int cfi[max]; //記錄更新後每個湖魚的個數
int di[max]; //間隔五分鐘,魚減少的數目
//記錄方案 ——以i結尾的湖_方案
struct nodetypelake[max];
//得到最大角標
int getmax(int a,int i,int j)
} return max_index;
} //求解方案函式
void solve()
else
t+=5;
} } }
//主函式
int main()
} for(int i=1;i>ti[i];
} cout<<"初始每個湖魚的個數:";
for(int i=1;i<=n;i++)
cout<<"乙個時間間隔,魚減少的個數:";
for(int i=1;i<=n;i++)
//呼叫求解函式
solve();
//列印
cout<<"最佳方案:"} cout<<"釣魚總數目:"/輸出每個湖所釣分鐘數目
for(int i=1;i<=n;i++) }
return 0;
}
問題 A 迷宮求解問題
時間限制 10 sec 記憶體限制 2048 mb 提交 574 解決 306 提交 狀態 討論版 用乙個m n的矩陣表示迷宮,0和1分別表示迷宮中的通路和障礙。設計乙個程式,對給定的迷宮,求出找到的第一條從入口到出口的通路,或得到沒有通路的結論。我們指定 1 迷宮的入口為矩陣的左上角 1,1 迷宮...
約瑟夫問題求解
終於又到了大名鼎鼎的約瑟夫問題了。約瑟夫問題也算是近代比較知名的乙個演算法問題了,有著成熟的演算法,其中有著強行模擬,還存在著一些神奇的數學方法,哈哈。今天我又來了強行模擬。啊,啊,啊。瞎。下面是問題的描述 題目描述 description 乙個旅行社要從n名旅客中選出一名幸運旅客,為他提供免費環球...
ThreeSum問題求解
問題描述 乙個包含n個元素的陣列,在其中選出3個元素 a,b,c 能否使得三個元素之和等於0.問題擴充套件 1.當三個元素可以重複時,例如 int a 此時可以選擇 1,1,2,即三個元素可以包含重複的元素。2.當三個元素不能包含重複的元素的時候,例如 int a 此時不能選擇 1,1,2 因為 1...