#26341: 居然WA!!!!!!!!!!!!


joey13130905@gmail.com (笨呆瓜)

學校 : 淡江大學
編號 : 89206
來源 : [1.163.240.33]
最後登入時間 :
2023-11-06 14:53:44
f257. 君王的處刑遊戲 | From: [118.167.143.232] | 發表日期 : 2021-08-02 19:55

#include <iostream>

using namespace std;

 

int main(){

ios_base::sync_with_stdio(0);

cin.tie(0);

long long int n,k,y,x; 

while(cin>>n){

long long int arr[n][n]={0}; 

cin>>k;

while(k--){

cin>>y>>x;

if(arr[y][x]!=-1){

arr[y][x]=-1;

for(int i=y-1;i<=y+1;i++){

for(int j=x-1;j<=x+1;j++){

if(i>=0 and j>=0 and arr[i][j]!=-1 and i<=n-1 and j<=n-1)

arr[i][j]++;

}

}

}

}

for(int i=0;i<n;i++){

for(int j=0;j<n;j++){

if(arr[j][i]==-1)

cout<<'x';

else cout<<arr[j][i]; 

}

cout<<"\n";

}

 

}

return 0; 

}

 

 

#0: 100% WA (line:23)

您的答案為: x2x33x2000 正確答案為: 02x33x2000

測範例測資ok!
不知哪裡錯了?
 
#26365: Re:居然WA!!!!!!!!!!!!


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [101.136.203.77]
最後登入時間 :
2024-04-07 15:34:14
f257. 君王的處刑遊戲 | From: [39.10.131.149] | 發表日期 : 2021-08-03 16:29

#include

using namespace std;

 

int main(){

ios_base::sync_with_stdio(0);

cin.tie(0);

long long int n,k,y,x; 

while(cin>>n){

long long int arr[n][n]={0}; 

cin>>k;

while(k--){

cin>>y>>x;

if(arr[y][x]!=-1){

arr[y][x]=-1;

for(int i=y-1;i<=y+1;i++){

for(int j=x-1;j<=x+1;j++){

if(i>=0 and j>=0 and arr[i][j]!=-1 and i<=n-1 and j<=n-1)

arr[i][j]++;

}

}

}

}

for(int i=0;i<n;i++){

for(int j=0;j<n;j++){

if(arr[j][i]==-1)

cout<<'x';

else cout<<arr[j][i]; 

}

cout<<"\n";

}

 

}

return 0; 

}

 

 

#0: 100% WA (line:23)

您的答案為: x2x33x2000 正確答案為: 02x33x2000

測範例測資ok!
不知哪裡錯了?


查了好久,終於找到為什麼錯了

簡單來說,似乎並不能用long long int arr[n][n]={0}把陣列所有元素設成0,因為你的陣列是variable length array,要用memset才行。

參考資料:https://stackoverflow.com/questions/17332360/initializing-variable-length-array

 

 
#26415: Re:居然WA!!!!!!!!!!!!


joey13130905@gmail.com (笨呆瓜)

學校 : 淡江大學
編號 : 89206
來源 : [1.163.240.33]
最後登入時間 :
2023-11-06 14:53:44
f257. 君王的處刑遊戲 | From: [118.167.139.49] | 發表日期 : 2021-08-05 15:49

#include

using namespace std;

 

int main(){

ios_base::sync_with_stdio(0);

cin.tie(0);

long long int n,k,y,x; 

while(cin>>n){

long long int arr[n][n]={0}; 

cin>>k;

while(k--){

cin>>y>>x;

if(arr[y][x]!=-1){

arr[y][x]=-1;

for(int i=y-1;i<=y+1;i++){

for(int j=x-1;j<=x+1;j++){

if(i>=0 and j>=0 and arr[i][j]!=-1 and i<=n-1 and j<=n-1)

arr[i][j]++;

}

}

}

}

for(int i=0;i<n;i++){

for(int j=0;j<n;j++){

if(arr[j][i]==-1)

cout<<'x';

else cout<<arr[j][i]; 

}

cout<<"\n";

}

 

}

return 0; 

}

 

 

#0: 100% WA (line:23)

您的答案為: x2x33x2000 正確答案為: 02x33x2000

測範例測資ok!
不知哪裡錯了?


查了好久,終於找到為什麼錯了

簡單來說,似乎並不能用long long int arr[n][n]={0}把陣列所有元素設成0,因為你的陣列是variable length array,要用memset才行。

參考資料:https://stackoverflow.com/questions/17332360/initializing-variable-length-array

 

謝謝genius!!!!!!!!!!!!!!!!!

已AC!

 
ZeroJudge Forum