程序地带

C++程序设计学习习题day1



目录
1.递归函数2.斐波那契数列(优化算法)3.DFS广度搜索14.DFS广度搜索2


1.递归函数
int fact(int n){
if(n==0) return 1;
return n*fact(n-1);
}
2.斐波那契数列(优化算法)
int memo[1000];
int fib(int n){
if(n<=1) return n;
if(memo[n]!=0) return memo[n];
return memo[n]=fib[n-1]+fib[n-2];}
3.DFS广度搜索1

给定整数a1,a2,a3…判断可以从中是否取出若干数,使他们的和恰好为k


输入:n=4
a={1,2,4,7}
k=13
输出:yes
int a[1000];
int n,k;
bool dfs(int i, int sum){
if(i==n) return sum==k;
if(dfs(i+1,sum)) return true;
if(dfs(i+1,sum+a[i]) return true;
return false;}
void solve(){
if(dfs(0,0)) printf("yes");
else printf("no");
4.DFS广度搜索2

在这里插入图片描述


int n,m;
char fileld[100][101];
void dfs(int x, int y){
field[x][y] ='.';
for(int dx=-1;dx<=1;dx++){
for(int dy=-1; dy<=1;dy++){
int nx=x+dx, ny=y+dy;
if(0<=nx&&nx<n&&0<=ny&&ny<m&&fileld[nx][ny]=='w') dfs(nx,ny);
}
}
}
void solve(){
int res=0;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(field[i][j]=='w'){
dfs(i,j);
res++; }
}
}
printf("%d",res);
return 0;}

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_51277037/article/details/112689362

随机推荐

Mac电脑使用: 完全彻底卸载node的步骤

前段时间在Mac电脑安装nvm管理node的时候遇到一个问题,就是在Mac电脑上已经安装过node的时候再安装nvm,造成nvm安装不成功的问题,原因在于在安...

三掌柜666 阅读(293)

Java并发编程-集合类的线程安全问题

集合类的线程安全问题1.List集合的线程安全1.1.ArrayList线程安全问题。1.2.ArrayList线程安全解决方案。1.2.1.使用Vector1.2.2.Collections.syn...

Java硬件工程师 阅读(104)

scanf可不可以输入浮点型_数据的输入和输出

一、基本数据类型C的基本数据类型有short、int、long、char、float、double等。类型多且杂,学习时极易厌烦,这时建议使用思维导图来整理这些繁杂但有章的...

weixin_39972567 阅读(209)