#include<iostream>
using namespace std;
int main(){
int a,b,n,m,k,i,j,flag,count=0;
cin>>n>>m>>k;
int temp[k]={0},r[k]={0},c[k]={0},s[k]={0},t[k]={0},mapp[n][m]={0},bomb[n][m]={0};
flag=k;
for(i=1;i<=k;i++){
cin>>r[i]>>c[i]>>s[i]>>t[i];
mapp[r[i]][c[i]]=1;
bomb[r[i]][c[i]]=1;
}
while(flag!=0){
for(i=1;i<=k;i++){
if(temp[i]==1){
continue;
}
mapp[r[i]][c[i]]=0;
r[i]+=s[i];
c[i]+=t[i];
mapp[r[i]][c[i]]=1;
if(r[i]<0 || r[i]>=n || c[i]<0 || c[i]>=m){
temp[i]=1;
flag-=1;
}
if(mapp[r[i]][c[i]]==1 && bomb[r[i]][c[i]]==1){
mapp[r[i]][c[i]]=0;
bomb[r[i]][c[i]]=0;
flag-=1;
temp[i]=1;
}
else{
bomb[r[i]][c[i]]=1;
}
}
}
for(i=0;i<n;i++){
for(j=0;j<m;j++){
if(bomb[i][j]==1){
count++;
}
}
}
cout<<count;
}
if(r[i]<0 || r[i]>=n || c[i]<0 || c[i]>=m){
temp[i]=1;
flag-=1;
}
if(mapp[r[i]][c[i]]==1 && bomb[r[i]][c[i]]==1){
mapp[r[i]][c[i]]=0;
bomb[r[i]][c[i]]=0;
flag-=1;
temp[i]=1;
}
else{
bomb[r[i]][c[i]]=1;
}
第二個if改成else if。
你的程式碼有可能flag減了兩次,結果變負數,while迴圈就變成無限迴圈造成TLE。
if(r[i]=n || c[i]=m){
temp[i]=1;
flag-=1;
}
if(mapp[r[i]][c[i]]==1 && bomb[r[i]][c[i]]==1){
mapp[r[i]][c[i]]=0;
bomb[r[i]][c[i]]=0;
flag-=1;
temp[i]=1;
}
else{
bomb[r[i]][c[i]]=1;
}
第二個if改成else if。你的程式碼有可能flag減了兩次,結果變負數,while迴圈就變成無限迴圈造成TLE。
非常感謝 我再仔細想想