本次考试,先深刻的反省一下没有学好递归,在此放上正解。
#include <bits/stdc++.h>
using namespace std;
inline int read()
{
int x=0;
char ch;
bool flag=true;
for(;ch>'9'||ch<'0';ch=getchar())
if(ch=='-')
flag=false;
for(;ch>='0'&&ch<='9';ch=getchar())
x=x*10+ch-'0';
return flag?x:-x;
}
int n,k;
int ans=1;
void rec(int n)
{
if(n<=k) return;
if((n+k)%2==1) return;
ans++;
rec((n+k)/2);
rec((n-k)/2);
}
int main()
{
n=read();
k=read();
rec(n);
cout<<ans<<endl;
return 0;
}
本次考试,第一题是一道佷水的题,但我居然用了将近半个小时才AC,其主要原因是(没有认真读题目)。唉,多年的老毛病了
但就是改不掉,也对他无可奈何。简单的讲,第一题恰好就是一个很简单的贪心算法,掠过不总结。
第二题呢,又是一个白痴错误:数组开小了…………
但这也只是一部分的原因,其中本人的主要错误在于对时间复杂度的把握为0;导致了循环的对象把握不准,据本班的以为蒟蒻说,在循环的过程中产生了一坨垃圾数据。
第三题无害水过。
第四题就是传说中的递归了
题意大概是这样的:long long ago 有一帮家伙去探险,当他们遇到查到的时候,如果人数允许分成相差为k的两队,就分头行动,否则就原地考察。
其实这一题非常地简单,但也就是因为它非常的简单,本人的数学思维就是跟不上,导致崩盘,其中本人对递归的理解也不够,当看到100000000的数据的时候整个人都是懵逼的,也无法认真的思考,表明心里素质也不是太好。
最后一题涉及到
dp,也是一道非常友好 (三善) 的题目;
但本人硬是在找到了规律的情况下写了暴力搜索,说明本人对dp的熟练程度也是远远不够的,但正好也是近几天才学的,复习起来倍感亲切。
本文通过一次考试经历,反思了在递归理解和运用上的不足,并总结了递归算法和动态规划的应用技巧。从实战角度出发,分享了在面对递归问题时的心理变化和解决思路,以及如何克服常见错误。

被折叠的 条评论
为什么被折叠?



