WElastkiss @ 2024-11-01 22:44:18
#include<bits/stdc++.h>
using namespace std;
long long T, n, m, k, x, y, f, ans;
char a[1001][1001], num[1001][1001];
int main(){
cin >> T;
for(int i=1; i<=T; i++){
cin >> n >> m >> k >> x >> y >> f;
for(int j=1; j<=n; j++){
for(int l=1; l<=m; l++){
cin >> a[j][l];
}
}
for(int j=1; j<=k; j++){
if(f==0){
if(a[x][y+1]=='.'){
y+=1;
//cout << x << ' ' << y << endl;
num[x][y]='A';
}else{
f+=1;
//cout << "向右转" << endl;
}
}else if(f==1){
if(a[x+1][y]=='.'){
x+=1;
//cout << x << ' ' << y << endl;
num[x][y]='A';
}else{
f+=1;
//cout << "向右转" << endl;
}
}else if(f==2){
if(a[x][y-1]=='.'){
y-=1;
//cout << x << ' ' << y << endl;
num[x][y]='A';
}else{
f+=1;
//cout << "向右转" << endl;
}
}else if(f==3){
if(a[x-1][y]=='.'){
x-=1;
//cout << x << ' ' << y << endl;
num[x][y]='A';
}else{
f=0;
//cout << "向右转" << endl;
}
}
// for(int j=1; j<=n; j++){
// for(int l=1; l<=m; l++){
// if(num[i][l]==9){
// ans++;
// }
// cout << num[i][l] << ' ';
// //num[i][l]=0;
// }
// cout << endl;
// }
// for(int j=1; j<=n; j++){
// for(int l=1; l<=m; l++){
// cout << num[j][l];
// }
// cout << endl;
// }
}
//cout << "--------------------------------------------" << endl;
// for(int j=1; j<=n; j++){
// for(int l=1; l<=m; l++){
// cout << num[j][l];
// }
// cout << endl;
// }
for(int j=1; j<=n; j++){
for(int l=1; l<=m; l++){
if(num[j][l]=='A'){
ans++;
num[j][l]=' ';
}
}
}
cout << ans+1 << endl;
//cout << "--------------------------------------------" << endl;
ans=0;
for(int j=1; j<=n; j++){
for(int l=1; l<=m; l++){
a[j][l]=' ';
}
}
}
return 0;
}
by cleverclever @ 2024-11-02 09:14:43
稍微改了一下
#include<bits/stdc++.h>
using namespace std;
long long T, n, m, k, x, y, f, ans;
char a[1001][1001], num[1001][1001];
int main(){
cin >> T;
for(int i=1; i<=T; i++){
cin >> n >> m >> k >> x >> y >> f;
for(int j=1; j<=n; j++){
for(int l=1; l<=m; l++){
cin >> a[j][l];
}
}
num[x][y] = 'A';
for(int j=1; j<=k; j++){
if(f==0){
if(a[x][y+1]=='.' && y+1<=m){
y+=1;
//cout << x << ' ' << y << endl;
num[x][y]='A';
}else{
f+=1;
//cout << "向右转" << endl;
}
}else if(f==1){
if(a[x+1][y]=='.' && x+1<=n){
x+=1;
//cout << x << ' ' << y << endl;
num[x][y]='A';
}else{
f+=1;
//cout << "向右转" << endl;
}
}else if(f==2){
if(a[x][y-1]=='.' && y-1>=1){
y-=1;
//cout << x << ' ' << y << endl;
num[x][y]='A';
}else{
f+=1;
//cout << "向右转" << endl;
}
}else if(f==3){
if(a[x-1][y]=='.' && x-1>=1){
x-=1;
//cout << x << ' ' << y << endl;
num[x][y]='A';
}else{
f=0;
//cout << "向右转" << endl;
}
}
// for(int j=1; j<=n; j++){
// for(int l=1; l<=m; l++){
// if(num[i][l]==9){
// ans++;
// }
// cout << num[i][l] << ' ';
// //num[i][l]=0;
// }
// cout << endl;
// }
// for(int j=1; j<=n; j++){
// for(int l=1; l<=m; l++){
// cout << num[j][l];
// }
// cout << endl;
// }
}
//cout << "--------------------------------------------" << endl;
// for(int j=1; j<=n; j++){
// for(int l=1; l<=m; l++){
// cout << num[j][l];
// }
// cout << endl;
// }
for(int j=1; j<=n; j++){
for(int l=1; l<=m; l++){
if(num[j][l]=='A'){
ans++;
num[j][l]=' ';
}
}
}
cout << ans << endl;
//cout << "--------------------------------------------" << endl;
ans=0;
for(int j=1; j<=n; j++){
for(int l=1; l<=m; l++){
a[j][l]=' ';
}
}
}
return 0;
}
by cleverclever @ 2024-11-02 09:17:33
by cleverclever @ 2024-11-02 09:20:08
还有在判断时,需要加上判断有没有超出范围的代码,比如
改一下这两个地方,就能
by WElastkiss @ 2024-11-05 09:20:08
@cleverclever 谢谢
by Wyl17370863080 @ 2024-11-05 20:10:59
using namespace std;
char a[1010][1010];
bool vis[1010][1010];
int main() {
int T;
cin >> T;
while(T--) {
int n, m, k;
int x, y, d;
int ans = 1;
cin >> n >> m >> k;
cin >> x >> y >> d;
for(int i = 1; i <= n; i++)
for(int j = 1; j <= m; j++)
cin >> a[i][j];
vis[x][y] = 1;
while(k--) {
int nowx = x, nowy = y;
if(d == 0) {
nowy = y + 1;
}else if (d == 1) {
nowx = x + 1;
}else if (d == 2) {
nowy = y - 1;
}else if (d == 3) {
nowx = x - 1;
}
if(nowx >= 1 && nowx <= n && nowy >= 1 && nowy <= m && a[nowx][nowy] == '.') {
x = nowx;
y = nowy;
if(!vis[x][y]) vis[x][y] = 1, ans++;
}else {
d = (d + 1) % 4;
}
}
cout << ans << endl;
for(int i = 1; i <= n; i++)
for(int j = 1; j <= m; j++)
vis[i][j] = 0;
}
return 0;
}