[算法设计与分析]4.1.2倒推法(猴子吃桃+一维数组杨辉三角形+穿越沙漠)
2018-03-31 16:27
501 查看
#include<stdio.h> #include<iostream> using namespace std; void MonkeyPeach(); void BinomialArray(); void CrossDessert(); int main () { MonkeyPeach(); BinomialArray(); CrossDessert(); } void MonkeyPeach() {//每天吃掉当前桃子数的一半多一个 设当天为a前一天桃子数为b 则a=b-(b/2+1) ->b=2(a+1) int n = 1;//n为桃子数量 int day = 4;//假设第day天只剩下一个桃子 for(int i = day - 1; i >= 1; i--) { n = 2 * (n + 1); } cout << "第一天的时候有桃子:" << n << endl; } void BinomialArray() { int N = 4;//设定杨辉三角形的高度 int a[N + 1] = {0, 1, 1};//因为要求为仅用一个一维数组 因此数组的长度为高度+1(第0位不用) cout << a[1] << endl; cout << a[1] << " " << a[2] <<endl; for(int i = 3; i <= N; i++) { a[1] = 1; a[i] = 1; for(int j = i - 1; j >= 2; j--) { a[j] = a[j] + a[j - 1]; } for(int k = 1; k <= i; k++) cout << a[k] << " "; cout << endl; } cout << endl; } //吉普车穿越1000千米的沙漠 总装油量为500加仑 耗油率为1加仑/千米 由于沙漠中没有油库 要建立临时油库 //求应在哪些地方建立油库 即各处存储的油量 void CrossDessert() { int dis = 500;//距离终点的距离 int oil = 500;//距离起点的距离 int k = 1;//储油点从后到前的序号 do {//倒着累加储油点之间的距离 并计算储油点的储油量 直到总距离超过1000 求解距离最近的一个储油点之间的距离及储油量 cout <<"storepoint " << k << " distance " << 1000 - dis << " oilquantity " << oil << endl; k++;//储油点编号距离终点越近越小 因为是倒序编号的 dis = dis + 500 / (2 * k - 1); oil = 500 * k; }while(dis < 1000); oil = 500 * (k - 1) + (1000 - dis) * (2 * k - 1); cout <<"storepoint " << k << " distance " << 0 << " oilquantity " << oil << endl; }
相关文章推荐
- (算法设计技巧与分析)floyd
- 【算法设计与分析】三个博弈论算法分析
- 【算法设计与分析】5、最长公共子序列
- 算法分析与设计课程——LeetCode刷题之4Sum
- 【算法设计与分析】最短路径的算法
- 算法分析与设计丨第二周丨LeetCode(4)——Maximum Subarray(Easy)
- 算法分析与设计丨第十三周丨LeetCode(17)——Coin Change(Medium)
- 算法分析与设计第一周习题:2. Add Two Numbers
- 算法设计分析之一(平摊分析,表扩增,势能方法)
- [算法分析与设计] leetcode 每周一题: 126. Word Ladder II
- 算法设计与分析-时间和空间的权衡
- 第九周算法分析与设计: Search for a Range
- 第五周算法分析与设计:Minimum Size Subarray Sum
- 算法分析与设计——LeetCode Problem.451 Sort Characters By Frequency
- 【算法设计与分析基础】8、背包问题
- 算法分析与设计week03--122.Best Time to Buy and Sell Stock II
- 算法分析与设计基础 (清华版)
- 算法设计与分析之不定期更新的日常3+贪心
- [Java算法分析与设计]线性结构与顺序表(List)的实现应用
- 【算法分析与设计】【第十四周】647. Palindromic Substrings