#include <iostream>
using namespace std;
int main(){
int N;
char x[100] [100],ans[100][100];
cin >> N ;
for (int i=0;i<N;i++) {
for (int j=0;j<N;j++) cin>>x[i] [j];
}
for (int i=0;i<N;i++) {
for (int j=0;j<N;j++) {
if (x[i][j] == '*') {
for (int k=0;k<N;k++) ans[k][j] = '*';
for (int l=0;l<N;l++) ans[i][l] = '*';
}
}
}
for (int i=0;i<N;i++) {
for (int j=0;j<N;j++) {
if(ans[i][j]!='*')cout<<"0";
else cout<<ans[i][j];
}
cout<<ans[i][N]<<endl;
}
return 0;
}
你的 ans 沒有初始化,因此 ans 中每個元素的初值不能保證是多少!
以下是實際測試過 Zero Judge 會 AC。
#include <iostream>
using std::cout;
using std::cin;
void printMap(int, char[100][100]);
int main()
{
int n = 0;
char ch = '\0';
char map[100][100];
char marked[100][100];
while(cin >> n)
{
// Read map from stdin.
for(int i=0; i<n; ++i)
for(int j=0; j<n; ++j)
cin >> map[i][j];
// Initialize marked map.
for(int i=0; i<n; ++i)
for(int j=0; j<n; ++j)
marked[i][j] = '0';
// Mark bombs and destroyed ranges.
for(int i=0; i<n; ++i)
{
for(int j=0; j<n; ++j)
{
if(map[i][j] == '*')
{
// Mark row.
for(int k=0; k<n; ++k)
marked[i][k] = '*';
// Mark column.
for(int k=0; k<n; ++k)
marked[k][j] = '*';
}
}
}
printMap(n, marked);
}
}
void printMap(int n, char map[100][100])
{
for(int i=0; i<n; ++i)
{
for(int j=0; j<n; ++j)
cout << map[i][j];
cout << "\n";
}
}
== Tips ==