insanitysans @ 2024-11-01 17:06:14
我差一点就满分!!
#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时没有改!!!!!! 我的天塌了!!!!!!!!
by Superboya @ 2024-11-01 17:11:49
666
by LionBlaze @ 2024-11-01 17:13:44
@insanitysans 你说得对,但是 sizeof
真的那么难用吗,而 fill
又不是不能用。
by insanitysans @ 2024-11-01 17:15:52
@LionBlaze 我当时不知道memset用来初始化二维数组要怎么用 所以打的是一维数组的方法
by LionBlaze @ 2024-11-01 17:16:42
@insanitysans emmm有点惨
by NFOT @ 2024-11-01 19:54:20
开了