Cows 算法
来源:互联网 发布:手机压缩文件的软件 编辑:程序博客网 时间:2024/04/27 04:12
两个方案
1. 循环普通解法
思路:new 一个牛圈,里面每个元素代表一头牛,元素值代表岁数。一年一年的循环计算,每个cow岁数都加一,如果岁数足够大到生孩子的年龄就生一个
int cows(int year) {
int sum = 1;
const int N = 100;
int* cows = new int[N];
cows[0] = 1; //first cow is one year old
for(int i=0; i<year; i++) {
//如果cows容量越界,重新非配空间
int temp = sum;
for(int j=0; j<temp; j++) {
if(cows[j] >= 4)cows[sum++] = 2;
cows[j]++;
}
}
return sum;
}
int main() {
printf("%d/n", cows(10));
getchar();
return 0;
}
2. 动态规划算法
思路:n年的牛的总头数 = 第1年出生的牛的头数+第2年出生的牛的头数+第3年出生的牛的头数+。。。
而且 第n年出生的牛的头数 = 第1年出生的牛的头数+第2年出生的牛的头数+第3年出生的牛的头数+。。。第n-3年出生的牛的头数(凡是这些年出生的牛都可以生小牛了)
int cows(int year) {
int* cows = new int[year];
memset(cows, 0, year*4);
cows[0] = 1;
if(year <= 3)return 1;
for(int i=3; i<year; i++) {
for(int j=0; j<=i-3; j++)cows[i] += cows[j];
}
int sum = 0;
for(int i=0; i<year; i++) {
sum += cows[i];
}
return sum;
}
int main() {
printf("%d/n", cows(10));
getchar();
return 0;
}
源文档 <http://bbs.chinaunix.net/archiver/tid-130156-page-12.html>
- Cows 算法
- POJ2186 Popular Cows(Tarjan算法)
- Cows
- Cows
- POJ2186 Popular Cows,Kosaraju算法+缩点
- poj 3275 Ranking the Cows floyd算法
- poj 2186 Popular Cows(targan算法)
- POJ 2186 Popular Cows Tarjan算法
- poj-2186-Popular Cows (tarjan算法)
- poj3348 Cows (Graham Scan算法学习)
- POJ 2456 Aggressive cows (二分算法)
- USACO-Section 1.2 Milking Cows【贪心算法】
- POJ2387--Til the Cows Come Home--Dijkstra算法裸题
- PKU2186(Popular Cows)+强连通分支Tarjan算法+缩点
- Codeforces-Round 174(Cows and Sequence)(树状数组、高校算法)
- poj 2387 Til the Cows Come Home(Dijskra算法)
- POJ2186 Popular Cows ,有向图, Tarjan算法
- POJ 2186 Popular Cows 强连通分量 Kosaraju算法
- C# Socket编程浅谈
- C++利用SOCKET传送文件
- 三维程序/游戏制作基本常识
- WebBroker 和 WebSnap测试
- 2.6.24以上内核中netlink使用方法
- Cows 算法
- flash 交互操作:裁剪位图
- jsp中文乱码的Filter过滤器配置
- D3DERR内容详细翻译
- 彩虹表的原理简介
- VC中GetLastError()获取错误信息的使用
- 常見索引操作
- vc中常用的方法
- c++编码规范101条