警示后人!!!!!!!
查看原帖
警示后人!!!!!!!
1086388
insanitysans楼主2024/11/1 17:06

我差一点就满分!!

#include<bits/stdc++.h>
using namespace std;
int T,n,m,k,x,y,d;
char a[1145][1145];
bool f[1145][1145];
int answer(){
	int ans=0;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			if(f[i][j]) ans++;
		}
	}
	return ans;
}
int main(){
	cin>>T;
	for(int t=1;t<=T;t++){
		memset(a,0,1145);
		memset(f,false,1145);
		cin>>n>>m>>k>>x>>y>>d;
		for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++){
				cin>>a[i][j];
			}
		}
		f[x][y]=true;
		for(int i=1;i<=k;i++){
			if(d==0&&y+1<=m&&a[x][y+1]!='x') y++,f[x][y]=true;
			else if(d==1&&x+1<=n&&a[x+1][y]!='x') x++,f[x][y]=true;
			else if(d==2&&y-1>=1&&a[x][y-1]!='x') y--,f[x][y]=true;
			else if(d==3&&x-1>=1&&a[x-1][y]!='x') x--,f[x][y]=true;
			else{
				d=(d+1)%4;
			}
		}
		cout<<answer()<<endl;
	}
	return 0;
}

第20,21行不能用1145!!!!!

#include<bits/stdc++.h>
using namespace std;
int T,n,m,k,x,y,d;
char a[1145][1145];
bool f[1145][1145];
int answer(){
	int ans=0;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			if(f[i][j]) ans++;
		}
	}
	return ans;
}
int main(){
	cin>>T;
	for(int t=1;t<=T;t++){
		memset(a,0,1145*1145);
		memset(f,false,1145*1145);
		cin>>n>>m>>k>>x>>y>>d;
		for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++){
				cin>>a[i][j];
			}
		}
		f[x][y]=true;
		for(int i=1;i<=k;i++){
			if(d==0&&y+1<=m&&a[x][y+1]!='x') y++,f[x][y]=true;
			else if(d==1&&x+1<=n&&a[x+1][y]!='x') x++,f[x][y]=true;
			else if(d==2&&y-1>=1&&a[x][y-1]!='x') y--,f[x][y]=true;
			else if(d==3&&x-1>=1&&a[x-1][y]!='x') x--,f[x][y]=true;
			else{
				d=(d+1)%4;
			}
		}
		cout<<answer()<<endl;
	}
	return 0;
}

这样写才可以全对!!!!! 但是我考csp-j时没有改!!!!!! 我的天塌了!!!!!!!!

2024/11/1 17:06
加载中...