百度笔试
Time Limit: 3000/3000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)
Problem Description:
有一天上体育课,老师让所有的学生排成一行,同时要求女生不能单独的站在队列中,也就说必须有2个以上的女生站在一起。举例来说,假如有4个学生,那么可能的排列方式为FFFF, FFFM, MFFF, FFMM, MFFM, MMFF, MMMM(其中F表示女生,M表示男生),4个学生有以上的7种组合。请编写程序,计算n个学生的符合以上要求的排队方式数量。(1<=n<=1000)
输入
输入正整数n,其中1<=n<=1000
输出
输出符合要求的数量,其中当n为1000时,返回的值非常大,请注意处理这种大数问题。
样例输入
4
5
10
20
样例输出
7
12
200
55405
#include <stdio.h> int result[1005][105]={0}; void init2(int n); void init(){ int i; result[1][1] = 1; result[2][1] = 2; result[3][1] = 4; result[4][1] = 7; for(i = 5;i<1001;i++) { init2(i); } } int main() { int n,i; init(); while(scanf("%d",&n)!=EOF) { //找到第一个不为零的 for(i = 100;i > 0&& result[n][i]==0;i--); //输出结果 printf("%d",result[n][i]); --i; for(;i>0;--i) { printf("%04d",result[n][i]); } printf("\n"); } return 0; } void init2(int n) { int dddddd=0,i; for(i = 1;i<101;i++) { dddddd += result[n-1][i] + result[n-2][i] + result[n-4][i]; result[n][i] = dddddd%10000; dddddd /= 10000; } while(dddddd) { result[n][i++] = dddddd%10000; dddddd /= 10000; } }
转载请注明出处:http://www.cnblogs.com/stonehat/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器