分巧克力【来源:CSDN线上编程挑战赛】——递归,费波那奇数列,迭代
/*====================================================================== 儿童节快到了,班长想要给班上的每个同学给一个巧克力, 巧克力的形状是一个宽为2,长为n的长方形,由于巧克力太贵, 班长就想把这个大块的巧克力分成许多 1*2(宽*长)的小块巧克力, 这样每个人都能得到一份1*2的巧克力,现在给定巧克力的长为 正整数n(1<=n<=91),请你判断对于这 个2*n的巧克力有多少种不同的分法?
分析:
这个其实就是考查费波纳奇数列。
考虑第一块的分法有如下两种选择:(横放或者竖放)
假设用f(n)表示长度为n的时候所有不同分法的数量,则
f(1)=1;
f(2)=2;
f(n)=f(n-1)+f(n-2)………………n>=3
题目输入n计算并输出f(n),所以可以直接用递归去解。
再看看,这个和费波那奇数列是一个样的,用迭代其实也可解决的。 ========================================================================*/
1 #include<stdio.h> 2 int main() 3 { 4 int n,i; 5 long n1=1; 6 long n2=2; 7 long c=n1+n2; 8 scanf("%d",&n); 9 if(n==1) printf("%ld\n",n1); 10 else if(n==2) printf("%ld\n",n2); 11 else 12 { 13 for(i=4;i<=n;i++) 14 { 15 n1=n2; 16 n2=c; 17 c=n1+n2; 18 } 19 printf("%ld\n",c); 20 } 21 return 0; 22 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App