假期刷题打卡--Day30

2024-02-14 13:36
文章标签 打卡 刷题 假期 day30

本文主要是介绍假期刷题打卡--Day30,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        虽然我平时也没刷几道题,但是还是选择给自己两天休息时间,现在继续了,直到开学。

1、MT1228宝宝抢糖果

宝宝们一起抢N个糖果(N<=10),手快的宝宝可以抢到2个糖果,手慢的只能抢到一个糖果。统计糖果可以多少种方式被瓜分。

格式

输入格式:

输入正整数N

输出格式:

输出整型

样例 1

输入:

4

输出:

5
分析过程

看到这个题,首先想到的是写两个循环,进行暴力尝试。于是,写下了代码:

#include<bits/stdc++.h> using namespace std;int main( )
{int n,count=0;cin >> n;for(int i=0;i<=n;i++){for(int j=0;j<=n;j++){if(n==i+2*j){
//                cout << i << "*" << j << "&" << endl;count++;}}}cout <<  count;return 0;
}

但是,发现执行代码的时候,执行结果并不能满足最终结果,所以,我的解决思路应该不太合适,需要重新思考。

于是去查看别人的思路,说这个题目依旧属于斐波那契数列,我不太理解,所以就去找轩哥码题了。

【码蹄集新手村全题解10】循环结构 MT1185 – MT1234_哔哩哔哩_bilibili

按照我的思路,实现的是输入数中1和2出现个数的方式数。比如说输入数为4,那么就能出现三种情况,前面数字为1的个数,后面数字为2的个数:
0 2

2 1

4 0

        所以并不是此题的答案。

        此题要求的是宝宝要抢糖果,但是不知道宝宝有多少个,所以就从糖果数入手。

        设一个数组a用来存储每次拿到糖果数的方式的个数,例如a[1]就表示1个糖果被拿走的方式只有一个,即1个都拿走;a[2]就表示2个糖果拿走的方式,2可以是1+1或者2+0,所以就是两种方式,所以先将这两种情况的实现方式次数存储起来。

        最后拿到的糖果数不是1就是2,假设是1,前面的糖果拿走的方式就是a[n-1];若是最后拿走2个,那么前面的糖果就有a[n-2]种方式。

详细的理解方式,可以参考轩哥码题的宝宝爬楼梯的这个解释。

【码蹄集新手村全题解10】循环结构 MT1185 – MT1234_哔哩哔哩_bilibili

所以,最后实现的代码如下:

实现代码
#include<bits/stdc++.h> using namespace std;int main( )
{int n, a[10] = {0,1,2};//数组下标从0开始的,所以前面加个0,跟前面计算月份天数的那个题一样cin >> n;for(int i=3;i<=n;i++){//拿的糖果数是1或者是2a[i] = a[i-1]+a[i-2];// cout << a[i] << "*" <<a[i-1] << "&" << a[i-2]<< endl;}cout << a[n];return 0;
}
个人反思

        虽然感觉自己懂了点,但是真的看到这个题目的时候还是懵了,还是不知道从何处下手。但是还是不能偷懒,先按照自己的理解写出这个代码,如果通过了,就皆大欢喜,如果通过不了,那么就重新思考,实在思考不出来就去参考别人的解题思路,然后在记忆,后面慢慢使用。我就准备按照这个方式学,先去看看有没有效果吧。刷题继续。

2、MT1230圆周率

编写一个程序,使用以下公式计算PI的近似值PI=4(1-1/3+1/5-1/7+1/9…)。括号中的最后一项应小于十的负六次方。

格式

输入格式:

输出格式:

输出为实型,保留2位小数

样例 1

输入:

输出:

3.14
分析过程

我最初理解的就是设置一个变量作为分母,同时作为循环变量,直到不满足条件,所以,首先写的代码如下:

#include<bits/stdc++.h> using namespace std;int main( )
{double a,sum=0;for(int a=1;a<pow(10,-6);a=a+2){sum += 1.0/a;// cout << sum;}printf("%.2f",sum);return 0;
}

但是发现,输出的结果为0.00,然后我发现,我连题目都看错了,计算的公式里面是有‘-'和'+'这两种情况的,所以重新去阅读题目,重新开始写。

重新理解后,发现这道题的计算公式中,两种情况,一种是加一种是总数减,所以按照理解,我又写了这个代码:

#include<bits/stdc++.h> using namespace std;int main( )
{double a,sum=1;int count=0;for(int i=3;;i=i+2){a = 1.0/i;count++;if(count%2!=0){sum -= a;// cout << sum << "&&" << endl;}else{sum += a;// cout << sum << "**" << endl;}if((1.0/i)<0.000001){// cout << i << "^";printf("%.2f",sum);break;}}return 0;
}

我感觉没什么错误,但是输出结果是0.79,这是为什么呢?

是因为前面没有*4,天哪,就离谱,那么大的一个4被我忽略掉了。

加上乘以四之后,成功实现代码,如下:

实现代码
#include<bits/stdc++.h> using namespace std;int main( )
{double a,sum=1;int count=0;for(int i=3;;i=i+2){a = 1.0/i;count++;if(count%2!=0){sum -= a;// cout << sum << "&&" << endl;}else{sum += a;// cout << sum << "**" << endl;}if((1.0/i)<0.000001){// cout << i << "^";printf("%.2f",sum*4);break;}}return 0;
}

明天继续吧。

这篇关于假期刷题打卡--Day30的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/708639

相关文章

【每日刷题】Day113

【每日刷题】Day113 🥕个人主页:开敲🍉 🔥所属专栏:每日刷题🍍 🌼文章目录🌼 1. 91. 解码方法 - 力扣(LeetCode) 2. LCR 098. 不同路径 - 力扣(LeetCode) 3. 63. 不同路径 II - 力扣(LeetCode) 1. 91. 解码方法 - 力扣(LeetCode) //思路:动态规划。 cl

hot100刷题第1-9题,三个专题哈希,双指针,滑动窗口

求满足条件的子数组,一般是前缀和、滑动窗口,经常结合哈希表; 区间操作元素,一般是前缀和、差分数组 数组有序,更大概率会用到二分搜索 目前已经掌握一些基本套路,重零刷起leetcode hot 100, 套路题按套路来,非套路题适当参考gpt解法。 一、梦开始的地方, 两数之和 class Solution:#注意要返回的是数组下标def twoSum(self, nums: Lis

代码随想录打卡Day25

今天一整天都在教研室做实验,没时间刷题,就做了一题,剩下的明天补 491.递增子序列 这道题目和之前的子集问题很像,但是有一点要注意的,这个输入的数组不能进行排序,所以就不能沿用之前的去重逻辑,这道题要去重还是得借助额外的变量来维护元素使用情况,但是这题的used为集合,且不能为全局变量,只能为树层遍历前定义的一个局部变量,除了这个改动以外,其他地方都是高度相似的。 class Soluti

代码随想录刷题day25丨491.递增子序列 ,46.全排列 ,47.全排列 II

代码随想录刷题day25丨491.递增子序列 ,46.全排列 ,47.全排列 II 1.题目 1.1递增子序列 题目链接:491. 非递减子序列 - 力扣(LeetCode) 视频讲解:回溯算法精讲,树层去重与树枝去重 | LeetCode:491.递增子序列_哔哩哔哩_bilibili 文档讲解:https://programmercarl.com/0491.%E9%80%92%E

代码随想录刷题day24丨93.复原IP地址 ,78.子集 , 90.子集II

代码随想录刷题day24丨93.复原IP地址 ,78.子集 , 90.子集II 1.题目 1.1复原IP地址 题目链接:93. 复原 IP 地址 - 力扣(LeetCode) 视频讲解:回溯算法如何分割字符串并判断是合法IP?| LeetCode:93.复原IP地址_哔哩哔哩_bilibili 文档讲解:https://programmercarl.com/0093.%E5%A4%8

T1打卡——mnist手写数字识别

🍨 本文为🔗365天深度学习训练营中的学习记录博客🍖 原作者:K同学啊 1.定义GPU import tensorflow as tfgpus=tf.config.list_physical_devices("GPU")if gpus:gpu0=gpus[0]tf.config.experimental.set_memort_groth(gpu0,True) #设置GPU现存用量按需

【代码随想录训练营第42期 续Day52打卡 - 图论Part3 - 卡码网 103. 水流问题 104. 建造最大岛屿

目录 一、做题心得 二、题目与题解 题目一:卡码网 103. 水流问题 题目链接 题解:DFS 题目二:卡码网 104. 建造最大岛屿 题目链接 题解:DFS  三、小结 一、做题心得 也是成功补上昨天的打卡了。 这里继续图论章节,还是选择使用 DFS 来解决这类搜索问题(单纯因为我更熟悉 DFS 一点),今天补卡的是水流问题和岛屿问题。个人感觉这一章节题对于刚

【笔记】数据结构刷题09

快速排序 215. 数组中的第K个最大元素 class Solution {public:int findKthLargest(vector<int>& nums, int k) {return divide(nums,0,nums.size()-1,nums.size()-k);}int divide(vector<int>& nums,int left,int right,int k)

C语言:刷题日志(1)

一.阶乘计算升级版 本题要求实现一个打印非负整数阶乘的函数。 其中n是用户传入的参数,其值不超过1000。如果n是非负整数,则该函数必须在一行中打印出n!的值,否则打印“Invalid input”。 首先,知道阶乘是所有小于及等于该数的正整数的积,并且0的阶乘为1。那么我们先来个简单的阶乘计算吧。 #include<stdio.h>int Fact(int n){if (n <=

【每日刷题】Day112

【每日刷题】Day112 🥕个人主页:开敲🍉 🔥所属专栏:每日刷题🍍 🌼文章目录🌼 1. 1137. 第 N 个泰波那契数 - 力扣(LeetCode) 2. 面试题 08.01. 三步问题 - 力扣(LeetCode) 3. LCR 088. 使用最小花费爬楼梯 - 力扣(LeetCode) 1. 1137. 第 N 个泰波那契数 - 力扣(LeetCo