Re: 10189 - Minesweeper
Posted: Wed Oct 06, 2010 8:00 pm
WHy WA????
Code: Select all
Solved...
Code: Select all
#include <iostream>
using namespace std;
int main()
{
int a,b,i,j,k=0;
cin >> a >> b;
char arr[104][104];
while(a!=0 && b!=0){
k++;
for(i=1;i<=a;i++){
for(j=1;j<=b;j++){
cin >> arr[i][j];
if(arr[i][j]!='*')
arr[i][j]='0';
}
}
for(i=1;i<=a;i++){
for(j=1;j<=b;j++){
if(arr[i][j] == '*'){
if(arr[i+1][j] != '*')
arr[i+1][j]++;
if(arr[i-1][j] != '*')
arr[i-1][j]++;
if(arr[i+1][j+1] != '*')
arr[i+1][j+1]++;
if(arr[i-1][j-1] != '*')
arr[i-1][j-1]++;
if(arr[i][j+1] != '*')
arr[i][j+1]++;
if(arr[i][j-1] != '*')
arr[i][j-1]++;
if(arr[i-1][j+1] != '*')
arr[i-1][j+1]++;
if(arr[i+1][j-1] != '*')
arr[i+1][j-1]++;
}
}
}
cout << "Field #" << k <<":"<< endl;
for(i=1;i<=a;i++){
for(j=1;j<=b;j++){
cout << arr[i][j] ;
}
cout << endl;
}
cout << endl;
cin >> a >> b;
}
}
kindly let me know why am I getting WA....I suppose my code is doing fine....
Code: Select all
nevermind, got AC.
Code: Select all
#include <fcntl.h>
#include <iostream>
#include <fstream>
#include <stdio.h>
using namespace std;
void updateField(int **mineField, int posY, int posX, int rows, int columns){
mineField[posY][posX] = -9;
//North
if((posY - 1) >= 0)
mineField[posY-1][posX]++;
//South
if((posY + 1) < rows)
mineField[posY + 1][posX]++;
//West
if((posX - 1) >= 0)
mineField[posY][posX - 1]++;
//East
if((posX + 1) < columns)
mineField[posY][posX + 1]++;
//NorthWest
if(((posY - 1) >=0) && ((posX - 1) >= 0))
mineField[posY - 1][posX - 1]++;
//SouthWest
if(((posY + 1) < rows) && ((posX - 1) >= 0))
mineField[posY + 1][posX - 1]++;
//NorthEast
if(((posY - 1) >=0) && ((posX + 1) < columns))
mineField[posY - 1][posX + 1]++;
//SouthEast
if(((posY + 1) < rows) && ((posX + 1) < columns))
mineField[posY + 1][posX + 1]++;
}
int main(int argc, char** argv) {
#ifndef ONLINE_JUDGE
close (0) ; open ("test.txt", O_RDONLY);
close (1) ; open ("result.txt", O_WRONLY | O_CREAT, 0600);
#endif
int field = 1;
int rows, columns;
while (cin >> rows >> columns){
//check for end of input
if (rows == 0 || columns == 0){
//cout << "break";
break;
}
if(field > 1)
cout << endl << endl;
//Dynamic field declaration and initialization
int **mineField;
mineField = new int*[rows];
for (int i = 0; i < rows; i++){
mineField[i] = new int[columns];
}
for(int i = 0; i < rows; i++)
for(int j = 0; j < columns; j++)
mineField[i][j] = 0;
//main iteration loop
for (int i = 0; i < rows; i++){
string line;
cin >> line;
//cout << "echo: " << line << endl;
for (int j = 0; j < columns; j++){
if (line[j] == '*')
updateField(mineField, i,j,rows,columns);
}
}
//print out results
cout << "Field #" << field << ":" << endl;
for(int i = 0; i < rows; i++){
for(int j = 0; j < columns; j++)
if(mineField[i][j] < 0)
cout << '*';
else
cout << mineField[i][j];
if (i != (rows -1))
cout << endl;
}
field++;
//Dymanic array memory release
for (int i = 0; i < rows; i++){
delete[] mineField[i];
}
delete[] mineField;
mineField = 0;
}
return 0;
}
Code: Select all
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
//freopen("input.txt", "r+", stdin);
//freopen("output.txt", "w+", stdout);
long row, column, cases=1;
while (true)
{
cin >> row >> column;
if(row==0 && column ==0) break;
char array[150][150];
int ans[152][152]={0};
for (int i=0; i < row; i++)
for (int j=0; j < column; j++)
{
cin >> array[i][j];
if(array[i][j]=='*') ans[i+1][j+1]=1;
}
for (int i=0; i < row; i++)
{
for (int j=0; j < column; j++)
{
if(array[i][j]=='.')
{
array[i][j] = ans[i][j+1]+ans[i+2][j+1]+ans[i+1][j]+ans[i+1][j+2]
+ans[i][j]+ans[i+2][j+2]+ans[i+2][j]+ans[i][j+2] + 48;
}
}
}
cout << "Field #" << cases << ":" << endl ;
for (int i=0; i < row; i++)
{
for (int j=0; j < column; j++)
{
cout << array[i][j];
}
cout << endl;
}
cases++;
cout << endl;
}
return 0;
}
Code: Select all
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
int main()
{
long int row, column;
int fieldCount = 0;
while (scanf("%ld %ld", &row, &column)!=EOF)
{
if (row == 0 && column == 0)
{
break;
}
char input[row+100][column+100];
getchar();
if (fieldCount!=0)
{
printf("\n");
}
fieldCount++;
for (int r = 0; r<row; r++)
{
gets(input[r]);
}
printf("Field #%d:\n", fieldCount);
char result[row+100][column+100];
for (int r = 0; r<row; r++)
{
int c;
for (c = 0; c<column; c++)
{
int mineCount = 0;
if (input[r][c]!='*')
{
if (input[r][c+1] == '*')
{
mineCount++;
}
if (input[r][c-1] == '*')
{
mineCount++;
}
if (input[r+1][c] == '*')
{
mineCount++;
}
if (input[r+1][c+1] == '*')
{
mineCount++;
}
if (input[r+1][c-1] == '*')
{
mineCount++;
}
if (input[r-1][c] == '*')
{
mineCount++;
}
if (input[r-1][c+1] == '*')
{
mineCount++;
}
if (input[r-1][c-1] == '*')
{
mineCount++;
}
result[r][c] = 48+mineCount;
}
else
{
result[r][c] = '*';
}
}
result[r][c] = NULL;
}
for (int i = 0; i<row; i++)
{
for (int j = 0; j<column; j++)
{
printf("%c", result[i][j]);
}
printf("\n");
}
}
return 0;
}
Code: Select all
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner s=new Scanner(System.in);
int dx[]=new int[]{0,0,1,-1,-1,-1,1,1};
int dy[]=new int[]{1,-1,0,0,-1,1,-1,1};
int num=1;
int ln=0;
int a=0;
int b=0;
while(true){
String g;
String nums[];
if(ln>0)System.out.println();
ln++;
g=s.nextLine();
nums=g.split(" ");
a=Integer.parseInt(nums[0]);
b=Integer.parseInt(nums[1]);
if(a==0&&b==0)break;
int map[][]=new int[a][b];
for (int i = 0; i < a; i++) {
String str=s.nextLine();
for (int j = 0; j < b; j++) {
if(str.charAt(j)=='*'){
map[i][j]=-1;
}
}
}
for (int i = 0; i < a; i++) {
for (int j = 0; j < b; j++) {
int t=map[i][j];
if(t!=-1)continue;
for (int k = 0; k < 8; k++) {
int ii=i+dx[k];
int jj=j+dy[k];
if(ii<0||ii>=a||jj<0||jj>=b)continue;
if(map[ii][jj]!=-1){
map[ii][jj]++;
}
}
}
}
System.out.println("Field #"+num+":");
num++;
for (int i = 0; i < a; i++) {
for (int j = 0; j < b; j++) {
if(map[i][j]!=-1)System.out.print(map[i][j]);
else System.out.print("*");
}
System.out.println();
}
}
}
}
Code: Select all
solved! 8ms, bling!
Code: Select all
#include<stdio.h>
#include<stdlib.h>
int main()
{
int l,c,p,b,q,i=0,f=1;
char **n;
while(scanf("%d %d",&l,&c)==2&&l!=0&&c!=0)
{
n=(char**)malloc(l*sizeof(char*));
for(b=0;b<l;b++)
n[b]=(char*)malloc((c+1)*sizeof(char));
for(p=0;p<l;p++)
scanf("%s",n[p]);
printf("Field #%d:\n",f);
for(p=0;p<l;p++)
{
for(q=0;q<c;q++)
{
if(n[p][q]!='*')
{
if(p!=0&&q!=0&&n[p-1][q-1]=='*')
i++;
if(p!=0&&n[p-1][q]=='*')
i++;
if(p!=0&&q!=c-1&&n[p-1][q+1]=='*')
i++;
if(q!=0&&n[p][q-1]=='*')
i++;
if(q!=c-1&&n[p][q+1]=='*')
i++;
if(p!=l-1&&q&&n[p+1][q-1]=='*')
i++;
if(p!=l-1&&n[p+1][q]=='*')
i++;
if(p!=l-1&&q!=c-1&&n[p+1][q+1]=='*')
i++;
printf("%d",i);
i=0;
}
else
printf("*");
}
printf("\n");
}
f++;
printf("\n");
}
return 0;
}
Code: Select all
/* Bismillahir Rahmanir Rahim */
/*Coder: Ahmad Faiyaz*/
#include <algorithm>
#include <cctype>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <map>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <string>
#include <vector>
# define FOR(i, a, b) for (int i=a; i<b; i++)
# define REP(i, a) FOR(i,0,a)
#define EPS 1e-11
#define inf ( 1LL << 31 ) - 1
#define LL long long
#define abs(x) (((x)< 0) ? (-(x)) : (x))
#define all(x) (x).begin(), (x).end()
#define ms(x, a) memset((x), (a), sizeof(x))
# define VI vector<int>
# define VS vector<string>
# define VC vector<char>
#define mp make_pair
#define pb push_back
#define sz(k) (int)(k).size()
using namespace std;
char table [120][120];
int main(){
freopen("in.txt","r",stdin);
int m,n;
int t=1;
while(cin>>m>>n){
if(m==0 && n==0)
break;
else{
if(t!=1)
cout<<endl;
ms(table,'0');
for(int i=3;i<m+3;i++)
for(int j=3;j<n+3;j++)
cin>>table[i][j];
for(int i=3;i<m+3;i++){
for(int j=3;j<n+3;j++){
if(table[i][j]!='*'){
int count=0;
for(int p=i-1;p<=i+1;p++){
for(int q=j-1;q<=j+1;q++){
if(table[p][q]=='*')
count++;
}
}
table[i][j]=count+'0';
}
}
}
printf("Field #%d:\n",t++);
for(int i=3;i<m+3;i++){
for(int j=3;j<n+3;j++){
cout<<table[i][j];
}
//if(i+1<m+3)
cout<<endl;
}
//cout<<endl;
}
}
}