题目:判断元素是否存在
思路:首先定义两个变量为k,x,分别来储存题目M集合中k,x,现在已知k是集合中的元素,,让我们判断x是不是集合中的元素,题目又告诉我们2k+1和3k+1也是集合中的元素,看到这,我就想到代码框架了:既然题目说k,x都是类型的数字,那么喔们就可以直接将这两个数进行比较了,于是我第一次是这么写的:
结果提交之后显示答案错误,可我当时样例通过了,于是我就在思考另一种做法,当时我觉得应该是
出错了,就把它删了,但是后来我发现,这道题适合用自定义函数来做,这是第二次代码:
这次,我写了一个panduan的自定义函数用来判断x是不是M集合里的,
思想是这样的:
如果x<k:{
返回1;表肯定:x是M集合里的数(x比k都要小一定在范围内)
}
如果x==k:{
返回1;表肯定:x是M集合里的数(k是集合里的数字,x等于k,x一定是)
}
如果x>k:{
返回0;这里是错的真的应该是这样的:
else{
return panduan(2*k+1)||panduan(3*k+1);//此时k小于x
}
}
这里是AC代码:
#include<cmath>
#include<cstdio>
#include<string>
#include<iomanip>
#include<iostream>
#include<algorithm>
using namespace std;
int k,x;
int panduan(int k){
if(x<k){
return 0;
}
else if(x==k){
return 1;
}
else{
return panduan(2*k+1)||panduan(3*k+1);//此时k小于x
}
}
int main(){
cin>>k>>x;
if(panduan(k)){
cout<<"YES";
}
else{
cout<<"NO";
}
return 0;
}
总结一下:以后我们再遇到这种解决问题的步骤相同,但是规模不同的的问题最好使用递归来完成