社区讨论

求解,只得60分,wa两个

P1002[NOIP 2002 普及组] 过河卒参与者 4已保存回复 40

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
40 条
当前快照
1 份
快照标识符
@mi6x0ywt
此快照首次捕获于
2025/11/20 12:12
4 个月前
此快照最后确认于
2025/11/20 16:59
4 个月前
查看原帖
请问是什么问题啊?找半天没找到毛病
CPP

#include<iostream>
using namespace std;
long long a[1001][1001];

long long f[1001][1001];

int main(){
	long long n,m;
	long long x,y;
	cin>>n>>m>>x>>y;
	
	f[0][0]=1;
	for(int i=1;i<=n;i++)f[i][0]=1;
	for(int i=1;i<=m;i++)f[0][i]=1;
	
	//a[hx-2][hy+1]=a[hx-1][hy+]=a[] 
	a[x][y]=1;
    if(x-1>=0&&y-2>=0)
    a[x-1][y-2]=1;
    if(x-2>=0&&y-1>=0)
    a[x-2][y-1]=1;
    if(x-2>=0&&y+1>=0)
    a[x-2][y+1]=1;
    if(x-1>=0&&y+2>=0)
    a[x-1][y+2]=1;
    if(x+1>=0&&y-2>=0)
    a[x+1][y-2]=1;
    if(x+2>=0&&y-1>=0)
    a[x+2][y-1]=1;
    if(x+2>=0&&y+1>=0)
    a[x+2][y+1]=1;
    if(x+1>=0&&y+2>=0)
    a[x+1][y+2]=1;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			if(a[i-1][j]!=1&&a[i][j-1]!=1&&a[i][j]!=1)
			f[i][j]=f[i-1][j]+f[i][j-1];
			else if(a[i][j-1]==1){
				f[i][j]=f[i-1][j];
			}else if(a[i-1][j]==1){
				f[i][j]=f[i][j-1];
			}else if(a[i-1][j]=1&&a[i][j-1]==1||a[i][j]==1){
				f[i][j]=0;
			}
		}
	}

cout<<f[n][m];
}

回复

40 条回复,欢迎继续交流。

正在加载回复...