这段动态规划的代码和注释掉的比有什么不一样
查看原帖
这段动态规划的代码和注释掉的比有什么不一样
1352070
namespace1楼主2024/5/3 15:30
#include<bits/stdc++.h>
using namespace std;
int main(){
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    long long int c[30][30]={0};
    int n,m,a,b; 
    cin>>n>>m>>a>>b;
  for(int i=0;i<=n;i++){
  	for(int j=0;j<=m;j++){
  		c[i][j]=1;
	  }
  }
    c[a][b]=0;
    if((a-2)>=0&&(b-1)>=0)c[a-2][b-1]=0;
    if((a-2)>=0&&(b+1)<=m)c[a-2][b+1]=0;
    if((a-1)>=0&&(b-2)>=0)c[a-1][b-2]=0;
    if((a-1)>=0&&(b+2)<=m)c[a-1][b+2]=0;
    if((a+2)<=n&&(b-1)>=0)c[a+2][b-1]=0;
    if((a+2)<=n&&(b+1)<=m)c[a+2][b+1]=0;
    if((a+1)<=n&&(b-2)>=0)c[a+1][b-2]=0;
    if((a+1)<=n&&(b+2)<=m)c[a+1][b+2]=0;
   
    for(int i=1;i<=m;i++){
        c[0][i]=c[0][i-1];
    }
    for(int i=1;i<=n;i++){
        c[i][0]=c[i-1][0];
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
        	if(c[i][j]==0)continue;
            c[i][j]=c[i-1][j]+c[i][j-1];
        }
    }
//for(int i=0;i<=n;i++){
//	for(int j=0;j<=m;j++){
//		if(i==0&&j==0)continue;
//		if(c[i][j]==0)continue;
//		if(i==0)c[i][j]=c[i][j-1];
//		else if(j==0)c[i][j]=c[i-1][j];
//		else c[i][j]=c[i-1][j]+c[i][j-1];
//	}
//}
    cout<<c[n][m];
    return 0;
}

2024/5/3 15:30
加载中...