C++递推算法

数塔问题

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

摘花生问题

#include<bits/stdc++.h>
using namespace std;
void f(int,int,int sum);
char a[100][100];
int n,ma=-1,m;
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		for(int j=0;j<=m;j++){
			cin>>a[i][j];
		}
	}
	f(1,1,0);
	cout<<ma;
	return 0;
}
void f(int x,int y,int sum){
	if(x==n&&y==m){
		sum=sum+a[x][y];
		ma=max(ma,sum);
		return;
	}
	if(y+1<=m){
		f(x,y+1,sum+a[x][y]);
	}
	if(x+1<=n) f(x+1,y,sum+a[x][y]);
	return;
}

流感传染

#include<bits/stdc++.h>
using namespace std;
void f(int,int);
char a[100][100];
int n,sum;
int main()
{
	int m;
	cin>>n;
	for(int i=0;i<n;i++){
		for(int j=0;j<n;j++){
			cin>>a[i][j];
		}
	}
	cin>>m;
	for(int i=0;i<m;i++){
		f(n,m);
	}
	cout<<sum/2;
	return 0;
}
void f(int n,int m){
	for(int i=0;i<n;i++){
		for(int j=0;j<n;j++){
			if(a[i][j]=='@'){
				if(m==0) sum++;
				if(a[i][j+1]=='.') a[i][j+1]='.';
				if(a[i][j-1]=='.') a[i][j-1]='.';
				if(a[i+1][j]=='.') a[i+1][j]='.';
				if(a[i-1][j]=='.') a[i-1][j]='.';
				sum=sum+4;
			}
		}
	}
}

数塔的行走路径

#include<bits/stdc++.h>
using namespace std;
void f(int);
struct p{
	int x,y;
};
p po[120];
int lp=0;
int a[100][100];
int b[100][100];
int n;
int main()
{
	cin>>n;
	for(int i=0;i<n;i++){
		for(int j=0;j<1+i;j++){
			cin>>a[i][j];
			if(i==n-1){
				b[i][j]=a[i][j];
			}
		}
	}
	int r=0;
	int c=0;
	po[0].x=r;
	po[0].y=c;
	for(int i=1;i<n;i++){
		if(b[r+1][c]>b[r+1][c+1]){
			r++;
			po[i].x=r;
			po[i].y=c;
		}
		else{
			r++;
			c++;
			po[i].x=r;
			po[i].y=c;
		}
	}
	for(int i=n-1;i>=1;i--){
		cout<<po[i].x+1<<','<<po[i].y+1<<"-->";
	}
	cout<<po[0].x+1<<','<<po[0].y+1<<endl;
	cout<<b[0][0];
	return 0;
}
void f(int n){
	
}

摘花生2

#include<bits/stdc++.h>
using namespace std;
void f(int);
struct p{
	int x,y;
};
p k[120];
int lp=0;
int a[100][100];
int b[100][100];
int n;
int main()
{
	int m;
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cin>>a[i][j];
			if(i==0&&j==0){
				b[i][j]=a[i][j];
			}
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			if(i==1) b[i][j]=b[i][j-1]+a[i][j];
			else if(j==1) b[i][j]=b[i-1][j]+a[i][j];
			else b[i][j]=max(b[i-1][j],b[i][j-1])+a[i][j];
		}
	}
	int r=n,c=m;
	k[lp++]=a[r][c];
	while(true){
		if(r==1&&c==1){
			break;
		}
		if(b[r-1][c]>b[r][c-1]){
			r=r-1;
			k[lp++]=a[r][c];
		}
		else{
			c=c-1;
			k[lp++]=a[r][c];
		}
	}
	for(int i=lp-1;i>=1;i--){
		cout<<k[i]<<"-";
	}
	cout<<k[0];
	return 0;
}
void f(int n){
	
}

相关推荐

  1. C++推算

    2024-04-08 23:48:02       16 阅读
  2. 推算4(c++)

    2024-04-08 23:48:02       10 阅读
  3. Linux C语言:指针函数、归函数及用

    2024-04-08 23:48:02       6 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-08 23:48:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-08 23:48:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-08 23:48:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-08 23:48:02       20 阅读

热门阅读

  1. 网络通信的隐形护卫

    2024-04-08 23:48:02       14 阅读
  2. 10.左右相同(省模拟赛)

    2024-04-08 23:48:02       14 阅读
  3. python 函数

    2024-04-08 23:48:02       13 阅读
  4. [RK-Linux] RK3399启动流程详解

    2024-04-08 23:48:02       16 阅读
  5. 数据库的介绍、分类、作用和特点

    2024-04-08 23:48:02       15 阅读
  6. 【Go高阶】细说 Channel 的进阶用法

    2024-04-08 23:48:02       15 阅读
  7. Docker Desktop安装

    2024-04-08 23:48:02       16 阅读
  8. react native 相机拍照

    2024-04-08 23:48:02       14 阅读
  9. 贪婪算法python实现

    2024-04-08 23:48:02       18 阅读
  10. nuxt3使用记录二:页面构建的细节(特别是SSG)

    2024-04-08 23:48:02       15 阅读
  11. es6新增加的语法

    2024-04-08 23:48:02       14 阅读