Problem A: 青蛙过河

Description

一条小溪尺寸不大,青蛙可以从左岸跳到右岸,在左岸有一石柱L,面积只容得下一只青蛙落脚,同样右岸也有一石柱R,面积也只容得下一只青蛙落脚。有一队青蛙从尺寸上一个比一个小。我们将青蛙从小到大,用1,2,…,n编号。规定初始时这队青蛙只能趴在左岸的石头L上,当然是一个落一个,小的落在大的上面。不允许大的在小的上面。在小溪中有S个石柱,有y片荷叶,规定溪中的柱子上允许一只青蛙落脚,如有多只同样要求一个落一个,大的在下,小的在上。对于荷叶只允许一只青蛙落脚,不允许多只在其上。对于右岸的石柱R,与左岸的石柱L一样允许多个青蛙落脚,但须一个落一个,小的在上,大的在下。当青蛙从左岸的L上跳走后就不允许再跳回来;同样,从左岸L上跳至右岸R,或从溪中荷叶或溪中石柱跳至右岸R 上的青蛙也不允许再离开。问在已知溪中有S根石柱和y片荷叶的情况下,最多能跳过多少只青蛙?

Input

多组测试数据,先输入一个整数T,表示组数,然后输入然后输入t行,每行输入2个整数s和y

Output

对于每组测试数据,请输出最多能跳过的青蛙数

Sample Input

3
0 1
0 2
1 1

Sample Output

2
3
4
可以看一下这个

代码实现

#include<bits/stdc++.h>
using namespace std;
int count(int s,int y)
{if(s==0)    return y+1;else    return 2*count(s-1,y);
}
int main()
{int t,s,y;while(cin>>t)while(t--){cin>>s>>y;cout<<count(s,y)<<endl;}return 0;
}

Problem B: 深入浅出学算法017-猴子爬山

Description

一个猴子在一座不超过30级的小山上爬山跳跃,猴子上山一步可跳1级或跳3级,试求上山有多少种不同的爬法

Input

多组测试数据,每组输入1个整数n,表示山的台阶数

Output

对于输入的整数n求出多少种爬法

Sample Input

30

Sample Output

58425

思路

猴子可以是从上一格上来的
也可能是迈三步上来的

代码

#include<iostream>
using namespace std;
int main()
{int n,f[40]={1,1,1,2};while(cin>>n){for(int i=4;i<=n;i++)f[i]=f[i-1]+f[i-3];cout<<f[n]<<endl;}return 0;
}

Problem C: 深入浅出学算法018-兔子繁殖

就上面改成 f[i]=f[i-1]+f[i-2] 就行

Problem D: 开宝箱2

Description

急先锋是一个商人,有一天找到了一个宝箱,宝箱需要正确的密码才能打开。同时他发现宝箱上有一个数字,和一份密码表。密码表上有n个密码,只有一个密码是正确的。

急先锋所在的岛上有m个地点,每个地点有两个神秘的数字。他通过交易得到每个地点上拥有的信息,也知道这个宝箱上的数字是一个地点的标号x。急先锋需要先到x号地点,x号地点上的第一个数字就是他要去的最终地点的标号,最终的地点上的第二个数字就是密码在密码表上的序号。

由于宝箱中的宝物价值太大。每过一段时间,有些地点上的数字将会发生变化。

急先锋想要知道打开这个宝箱的密码,聪明的你能不能直接告诉他呢?

Input

第一行两个数字n,m.(1<=n,m<=20)

接下来n个数字ai表示密码表上序号1到序号n的密码分别是多少。(1 <=ai<=100)

接下来m行每行两个数字u,v。(1 <= u<=m,1<= v <=n)

然后给你一个T,表示T次操作。(1<=T<= 20)

接下来的T行,每行的第一个数字op,表示第op种操作。

第1种操作:接下来有一个数字x,表示宝箱上的数字。(1<=x<=m)。

第2种操作:接下来有三个数字x,u,v,表示x号地点的数字改成u,v。

Output

每次执行第一种操作1后,输出一个数字表示最后的密码。(每个数字占1行)。

Sample Input

5 4
1 2 3 4 5
2 4
3 3
1 2
2 5
4
1 1
2 1 4 2
1 1
1 2

Sample Output

3
5
2

思路

题目不难
就是数据多 有点复杂 拿出笔写一写就不难

#include<iostream>
using namespace std;
int main()
{int n,m,a[30],dd[30][2],t,op,x,u,v,i;while(cin>>n>>m){for(i=1;i<=n;i++)cin>>a[i];for(i=1;i<=m;i++)cin>>dd[i][0]>>dd[i][1];cin>>t;while(t--){cin>>op;if(op==1){cin>>x;cout<<a[dd[dd[x][0]][1]]<<endl; //这一句画个图就懂了}else if(op==2){cin>>x>>u>>v;dd[x][0]=u;dd[x][1]=v;}}}return 0;
}

Problem E: 找气球

Description

zstu集训队经常举办月赛,但是气球经常不够.现有多个桶,每个桶有一种颜色,每个桶可能对应多个题,给定每个题对应的桶,打比赛的时候,经常某道题被发现是水题,但是该颜色的气球没有了,所以quxing201606只能用另一种颜色的气球代替,即把某个桶颜色改成另一种颜色.quxing201606还想知道某道题是什么颜色(属于的桶的颜色).(必须使用指针数组完成!!!)

Input

多组测试,两个数n,m,(n<=100)表示n个题,(m<=100)表示m个桶.接下来m个数,第i个数表示第i个桶对应的颜色.然后n个数,表示第i题属于哪个桶.接下来一个q(<=100),表示q个操作,然后q行,每行第一个op,表示是什么操作.op为1时,两个数x,y,表示把x个桶的颜色变化为y.op为2时,一个数x,表示查询第x题的气球颜色

Output

对于每个op为2的操作输出一个数,表示该题对应的气球是什么颜色

Sample Input

3 2
3 4
1 1 2
3
2 1
1 1 2
2 2

Sample Output

3
2

跟上题相似 不赘述

#include<iostream>
using namespace std;
int main()
{int n,m,tong[110],ti[110],q,op,x,y,i;while(cin>>n>>m){for(i=1;i<=m;i++)cin>>tong[i];for(i=1;i<=n;i++)cin>>ti[i];cin>>q;while(q--){cin>>op;if(op==2){cin>>x;cout<<tong[ti[x]]<<endl;}else if(op==1){cin>>x>>y;tong[x]=y;}}}return 0;
}

Problem F: 指针函数

函数指针基本知识

函数指针 顾名思义 就是指向函数的指针
每个函数都占用一段内存单元,它们有一个入口地址(起始地址)
在C语言中,函数名代表函数的入口地址。
我们可以定义一个指针变量,接收函数的入口地址,让它指向函数,这就是指向函数的指针,也称为函数指针。
通过函数指针可以调用函数,它也可以作为函数的参数。


这里的int都改成void也是没有问题的 毕竟因为他没有返回值嘛
这样就实现了用函数指针调用函数的功能
然后你再看看题目的提示:写两个函数 算面积 然后再写一个 用上面两个做参数算面积 这样应该能理解了

Description

YHZ自认为很聪明的人, 在C语言课上老师布置了一个作业,让能求正方形和圆的面积, 正当YHZ要跃跃欲试的时候, 老师却要求使用函数指针来实现这个功能,YHZ立马就不会了,他现在向你求助,你能帮他完成这个程序吗?

提示:

编写calAreaSquare(double x)函数来计算边长为x的正方形面积。

编写calAreaCircle(double x)函数来计算半径为x的圆面积。

编写calArea函数用以上两个函数作为参数实现求正方形和圆的面积。

Pi的求法

#include<math.h>

Pi= acos(-1.0)

Input

第一行有一个正数T表示有T个询问。 接下来有T行,每行有一个正数op, 和一个浮点数x,

如果op = 1, x 表示正方形的边长。 如果 op = 2, x 表示圆的半径。

Output

输出只有一行表示所求的面积(保留五位小数)。

Sample Input

2
1 2
2 1

Sample Output

4.00000
3.14159

代码实现

其实我觉得这个题目要实现这个功能也是自找麻烦

#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
double Pi = acos(-1.0);
double calAreaSquare(double x)
{return x*x;}
double calAreaCircle(double x)
{return Pi*x*x;}
double calArea(double x,int *op)
{double (*square)(double);double (*circle)(double);square=calAreaSquare;circle=calAreaCircle;if(*op==1)printf("%.5f\n",(*square)(x));else if(*op==2)printf("%.5f\n",(*circle)(x));
}
int main()
{int t,op;double x;while(cin>>t){while(t--){cin>>op>>x;if(op==1)calArea(x,&op);else if(op==2)calArea(x,&op);}}return 0;
}

Problem G: 铺地砖

Description

元旦过去了,新年大酬宾活动也已经告一段落了。陈盖历望着堆在仓库的瓷砖,很无聊的他把这些瓷砖裁成很多1X1 1X2 1X3的小瓷砖,然后他把这些小瓷砖排在地上画的一个1*n的长方形里。问铺满这个长方形共有多少种方法?

Input

首先输入一个整数T,表示有T组测试数据 然后是T行,每行输入1个正整数n(n<=50)

Output

对于每个n输出铺的方法种数

Sample Input

3
1
2
3

Sample Output

1
2
4
还有一道一模一样的题:骨牌铺法

代码

#include<bits/stdc++.h>
using namespace std;
int main()
{int a[100],i,t,n;while(cin>>t){while(t--){cin>>n;a[1]=1;a[2]=2;a[3]=4;for(i=4;i<=n;i++)a[i]=a[i-1]+a[i-2]+a[i-3];cout<<a[n]<<endl;}}return 0;
}

青蛙过河 猴子爬山 兔子繁殖 开宝箱2 找气球 指针函数 铺地砖相关推荐

  1. 【C递归和迭代】兔子繁殖问题、青蛙跳台阶问题和汉诺塔问题

    ⭐博客主页:️CS semi主页 ⭐欢迎关注:点赞收藏+留言 ⭐系列专栏:C语言初阶 ⭐代码仓库:C Advanced 家人们更新不易,你们的点赞和关注对我而言十分重要,友友们麻烦多多点赞+关注,你们 ...

  2. python兔子繁殖问题中如何输出相应月份的数列_斐波那契数列介绍及Python中五种方法斐波那契数列...

    Q:斐波那契数列为何那么重要,全部关于数学的书几乎都会提到? A:由于斐波那契数列在数学和生活以及天然界中都很是有用.html 1. 斐波那契数列 概念引入 斐波那契数列(Fibonacci sequ ...

  3. 猴子爬山编程java_Java趣味编程100例

    第1章 变幻多姿的图表(教学视频:69分钟) 1.1 金字塔图案 1.2 九九乘法表 1.3 余弦曲线 1.4 奥运五环旗 1.5 杨辉三角 1.6 国际象棋棋盘 1.7 心形图 1.8 回型矩阵 1 ...

  4. Python解题 - NOIP2005 青蛙过河

    本题解经过热心网友的指正,已经更新,问哥为之前的武断向大家道歉.此题解仅供参考,感谢大家的监督与建议. 题目描述 在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧.在桥上有一些石子,青蛙很 ...

  5. 两个各四只青蛙过河java_趣味算法——青蛙过河(JAVA)

    /*** 青蛙过河 *@authorrubekid **/ public classRiverFrog {public static final int LEFT_FROG = -1;public s ...

  6. nyoj-619 青蛙过河

    题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=619 题目大意:就是有一条宽为L的河,河上有n个石头,每个石头与河对岸的距离为a[i],然 ...

  7. P1244 青蛙过河

    P1244 青蛙过河 题目描述 有一条河,左边一个石墩(A区)上有编号为1,2,3,4,-,n的n只青蛙,河中有k个荷叶(C区),还有h个石墩(D区),右边有一个石墩(B区),如下图所示.n只青蛙要过 ...

  8. python斐波那契数列前20项_兔子繁殖问题带来的智商碾压:斐波那契数列趣谈

    本文来自公众号:超级数学建模 微信号 :supermodeling 原文标题:斐波那契数列趣谈 via 善科 by BB 一般认为斐波那契数列的提出是基于兔子的繁殖问题:如果一开始有一对兔子,它们每月 ...

  9. python实现猴子爬山算法

    猴子爬山一只顽猴在一座有N级台阶的小山上爬山跳跃.上山时需从山脚至山顶往上跳N级台阶,一步可跳1级,或跳3级,求上山有多少种不同的跳法? (N<50) 问题分析: 每一次都可以选择1,2,3有3 ...

最新文章

  1. CentOS7.3 安装配置 Nginx、MariaDB、PHP
  2. 用飞桨做自然语言处理:神经网络语言模型应用实例
  3. java抽象类 抽象方法_Java基础 -- Java 抽象类 抽象方法
  4. 性能测试中批量数据制作实例的多种方法讨论
  5. RabbitMQ消息队列应用
  6. Spring mvc 拦截器 配置心得
  7. html5 超链接 图像映射,链接图像
  8. 有关 strongSwan 的英文文档
  9. 使用GDAL获取HDF等数据集中的图像
  10. 你与30W奖金只差一个 Apache Flink 极客挑战赛的报名
  11. Java基础---Java中运算符优先级(十六)
  12. 小鬼授权系统源码全解密源码 附授权代码
  13. IP抓包精准定位教程
  14. Android键盘输入法(一)——键盘类型
  15. what is AOP
  16. python自动生成采集规则_快速制作规则及获取规则提取器API
  17. Linux搭建Web网站
  18. 5种让你入门免费学习编程的方法
  19. 揭秘三端型肖特基二极管检测好坏的方法
  20. HTTP Status 400 – 错误的请求,由于被认为是客户端对错误(例如:畸形的请求语法、无效的请求信息帧或者虚拟的请求路由),服务器无法或不会处理当前请求。

热门文章

  1. centos7 分辨率修改_centos系统修改屏幕分辨率问题
  2. Linux之问题详解(一):Linux怎么创建一个html文件通过CentOS部署html网站到服务器
  3. 黑马程序员_源自梦想 GUI
  4. 高中学计算机都是学什么,学计算机高中选什么科目
  5. as it exceeds the max of 500KB._It#39;s a date的一语双关:它不仅仅表示“约会”
  6. Markdown使用指南
  7. yarn安装依赖时出现错误(2种解决方法)Integrity check failed for “antd“ computed integrity doesn‘t match our records)
  8. 关于转换JSON列表错误导致结果出错的问题
  9. svn 分支 合并
  10. js实现缓慢回到页面顶部