杭电ACM1297——Children’s Queue~~大数相加的应用
来源:互联网 发布:telnet 80端口 编辑:程序博客网 时间:2024/06/05 15:32
题目的意思很明确,不能单独有一个女生站一起。
假设有N个人。
1.最后一个人是男生,则有F(N - 1)。
2.最后一个人是女生,则第N - 1也是女生,则有F(N - 1)。
但还有一种就是,第N - 2个是女生,(是男生的话,包含在F(N - 1)中),但是第N - 3 个是男生,则不包含在上面的情况中,但是也是符合的。也就是最后三个是女生,倒数第四个是男生。也就是还有F(N - 4)种。
所以有递推公式:F(N) = F(N - 1) + F(N - 2) + F(N - 4)。
下面的是AC的代码:
#include <iostream>#include <cstring>using namespace std;char num[1001][300];void add(int x, int y) //大数相加函数{int temp[300];int len1 = strlen(num[x]);int len2 = strlen(num[y]);int i, j, k = 0;for(i = len1 - 1, j = len2 - 1; i >= 0 && j >= 0; i--, j--){temp[k++] = num[x][i] - '0' + num[y][j] - '0';}while(i >= 0){temp[k++] = num[x][i--] - '0';}while(j >= 0){temp[k++] = num[y][j--] - '0';}for(i = 0; i < k - 1; i++){if(temp[i] >= 10){temp[i + 1] += temp[i] / 10;temp[i] %= 10;}}if(temp[k - 1] >= 10){temp[k] = temp[k - 1] / 10;temp[k - 1] %= 10;k++;}i = k - 1;j = 0;while(i >= 0){num[x][j++] = temp[i--] + '0';}num[x][k] = '\0';}int main(){int i;num[0][0] = '1'; num[0][1] = '\0';num[1][0] = '1'; num[1][1] = '\0';num[2][0] = '2'; num[2][1] = '\0';num[3][0] = '4'; num[3][1] = '\0';num[4][0] = '7'; num[4][1] = '\0';for(i = 5; i <= 1000; i++){strcpy(num[i], num[i - 1]);add(i, i - 2);add(i, i - 4);}while(cin >> i){cout << num[i] << endl;}return 0;}
0 0
- 杭电ACM1297——Children’s Queue~~大数相加的应用
- 杭电acm 1297 Children's Queue.大数加递归
- 递推—杭电1297 Children’s Queue
- 【大数递推】HDU 1297——Children’s Queue
- 杭电ACM 1297 Children’s Queue
- 杭电ACM 1297 Children’s Queue
- 杭电1297-Children’s Queue
- 杭电ACM 1297 Children’s Queue
- 杭电 1297 Children’s Queue .
- 杭电1297 Children’s Queue
- 杭电 2100 Children’s Queue
- 杭电1002——大数相加
- hdu 1297 children's queue #DP#大数
- HDU 大数模板之Children’s Queue
- Children’s Queue 1297 (大数)
- HDU 1297 Children’s Queue 递归+大数
- Children’s Queue大数加法及规律
- Children’s Queue (大数/高精度)
- ubuntu下配置vpn支持访问外网
- 鸿学金信风控详细介绍
- Java基础---反射
- tee命令用法小结
- 三、PageView Button的事件处理
- 杭电ACM1297——Children’s Queue~~大数相加的应用
- [C#学习笔记]获取当前系统的基本信息
- SpringMVC+MyBatis环境整合开发案例
- android中的数据交换格式之JSON
- spring jdbctemplate
- SQL中将一列的多行内容拼接成一行
- [Effective Java]第二章 创建和销毁对象
- Android 异常分类及处理
- SQL中distinct的用法