heeeeeelp!!!

34 views
Skip to first unread message

farzane mokhtari

unread,
Jul 11, 2012, 1:04:19 AM7/11/12
to shariat...@googlegroups.com
 
salam

in code vase soale 2vome programming challenges hast ama accept nemishe.
be nazare shoma moshkel az kojast?

 ****************************************************
 surate soal:

PC/UVa IDs: 110102/10189, Popularity: A, Success rate: high Level: 1

Have you ever played Minesweeper? This cute little game comes with a certain operating

system whose name we can’t remember. The goal of the game is to find where

all the mines are located within a M × N field.

The game shows a number in a square which tells you how many mines there are

adjacent to that square. Each square has at most eight adjacent squares. The 4×4 field

on the left contains two mines, each represented by a “*” character. If we represent the

same field by the hint numbers described above, we end up with the field on the right:

*...

....

.*..

....

*100

2210

1*10

1110

Input

The input will consist of an arbitrary number of fields. The first line of each field

contains two integers n and m (0 < n,m 100) which stand for the number of lines

and columns of the field, respectively. Each of the next n lines contains exactly m

characters, representing the field.

Safe squares are denoted by “.” and mine squares by “*,” both without the quotes.

The first field line where n = m = 0 represents the end of input and should not be

processed.

Output

For each field, print the message Field #x: on a line alone, where x stands for the

number of the field starting from 1. The next n lines should contain the field with the

.” characters replaced by the number of mines adjacent to that square. There must

be an empty line between field outputs.

Sample Input

4 4

*...

....

.*..

....

3 5

**...

.....

.*...

0 0

Sample Output

Field #1:

*100

2210

1*10

1110

Field #2:

**100

33200

1*100

********************************************************************************

#include "stdafx.h"
#include "stdlib.h"
#include "stdio.h"
#include <string.h>
#include <iostream>

//using namespace System;
using namespace std;

int main()
{
       int i=4, j = 4, count = 0,h=0,l=0,fieldNum=1;
    int p [100];
    // input matrix
    char mS[100][100];
   

    FILE *input;
    input = fopen("input.txt","w");

    while(cin>>i>>j &&(i !=0 && j !=0))
    {
         // output matrix
   int ms2 [100][100];
     //fprintf(input,

    //gereftan vooroodi
      for (int h = 0; h < i; h++)
      {
     for (int l = 0; l < j; l++)
     {
      cin>>mS[h][l];
      ms2[h][l]=0;
     }
      }
    // print output
      //cout<<"Field #"<<fieldNum<<":"<<endl;
      if (fieldNum == 1)
       fprintf(input,"Field #%d:",fieldNum);
      else
       fprintf(input,"\n\nField #%d:",fieldNum);

      for (int n = 0; n < i; n++)
    {
     for (int m = 0; m < j; m++)
     {
      if (mS[n][m] == '*')
      {
       ms2[n][m] = 9;

       if(mS[n+1][m+1]!='*'&& n+1<i && m+1<j )
        ms2[n+1][m+1]++;

       if(mS[n+1][m]!='*'&&n+1<i )
        ms2[n+1][m]++;

       if(mS[n][m+1]!='*'&& m+1<j) 
        ms2[n][m+1]++;

       if(mS[n-1][m-1]!='*'&&n-1>=0 && m-1>=0)
        ms2[n-1][m-1]++;

       if(mS[n-1][m]!='*'&& n-1>=0)
        ms2[n-1][m]++;

       if(mS[n][m-1]!='*'&& m-1>=0) 
        ms2[n][m-1]++;

       if(mS[n+1][m-1]!='*'&&n+1<i && m-1>=0)
        ms2[n+1][m-1]++;

       if(mS[n-1][m+1]!='*'&& m+1<j && n-1>=0)
        ms2[n-1][m+1]++;
      }
     }
      //}
   }

   for (int n = 0; n < i; n++)
   {
    fprintf(input,"\n");
    for (int m = 0; m < j; m++)
    {
     if(ms2[n][m]==9)
      //cout<<'*';
      fprintf(input,"*");
     else
     {
     int i;
     i=ms2[n][m];
     //cout<<i;
     fprintf(input,"%d",i);
     }
    }
   }
   //cout<<endl;
   //fprintf(input,"\n");
   fieldNum++;
    }
   
    fclose(input);
    input = fopen("input.txt","r");
     if (input == NULL)
  {
   int z=0;
   int x =5/z;
   printf("\nCan not open log output file, exiting...");
   exit(1);
  }

    char c;

    while (!feof(input))
    {
     c = fgetc(input);
     if (feof(input))
      break;
     else
      cout<<c;
    }

    fclose(input);

return 0;
}

Niloofar.Javadi

unread,
Jul 13, 2012, 7:54:40 AM7/13/12
to shariat...@googlegroups.com
سلام بر شما!
اولین توصیه ای که دارم اینه که یه کم کد رو از نظر ظاهری مرتب کنید. loop ها کروشه هاشون هماهنگ بسته بشه مثلا. و این که comment های کوچک بگذارید که متوجه بشین چی کار داشتین می کردین. 
اصلا ایده شما برای حل این سوال چی بوده؟؟

دوم این که باید در مورد ایده سوال بحث بشه. که منطقا متوجه بشیم آیآ چیزی هست که در نظر نگرفتیم؟ یا نه؟ بعدش نکته دیگه کامپایل کردنه! مرحله به مرحله کد رو دیباگ کنید. ببینید همون ایده ای رو که توی ذهنتون داشتید دنبال میشه توی کد هم؟ 

سوم این که شما کدی که زدید رو عینا این جا آوردید؟؟؟!! آخه چرا accept  نمی شد؟ چه error می داد؟ run time ? توی زمان مناسب جواب نمی داد؟ خلاصه چی؟؟؟

حتما از اون فایلی که در اختیار دارید  انواع مشکلات رو که منجر به پذیرفته نشدن سوال میشه رو می دونید دیگه؟؟

فینگلیش هم توی کد نباشه!! اصلا!


در سه‌شنبه 10 ژوئیهٔ 2012، ساعت 22:04:19 (UTC-7)، Farzane Mokhtari نوشته:

farzane mokhtari

unread,
Jul 13, 2012, 8:44:28 AM7/13/12
to shariat...@googlegroups.com
سلام
نکته هایی که گفتید سعی میکنم حتما رعایت کنم.
آخرین بار WA داد.
منظورتون از اون فایل دقیقا کدوم فایله؟

Niloofar Javadi

unread,
Jul 13, 2012, 9:58:38 AM7/13/12
to shariat...@googlegroups.com
سلام
همون که براتون فرستاده بودم  و انواع مشکلات رو بررسی می کرد. این مشکلی که شما می گید الان داره یعنی که یک حالت چک نشده و مثلا در حالت خاصی جواب نمی ده.

سوال مربوط به مساله مین سوییپر هست. یعنی ایده کلی اینه که یه آرایه دو بعدی بگیرید. اول با توجه به ورودی علامت گذاری کنید بمب ها رو و بعدش هم برای هر خونه بشمرید اطرافش رو دیگه.
با توجه به این مسئله، حتما باید همه چیز رو چک کنید. نکته مهم توجه به ابعاد آرایه هستش. احتمالا این مسئله رو در نظر نگرفتین که مشکل دارید.

farzane mokhtari

unread,
Jul 13, 2012, 11:01:39 AM7/13/12
to shariat...@googlegroups.com
صورت سوال حداکثر m,n (ردیف و ستون آرایه) صد گفته من هم صد گذاشتم.
لینک خوب از طرف شما دارم اما فایل نه! ممنون میشم اگه برام بفرستید.


2012/7/13 Niloofar Javadi <nja...@acm.org>

Niloofar Javadi

unread,
Jul 13, 2012, 11:23:01 AM7/13/12
to shariat...@googlegroups.com
منظور این فایل هست که در سایت دانشگاه نیز گذاشته شده است!! از این جا 

منظورم چک کردن حدود ماتریس است. مثلا یه لوپ اگه بگذاری که همیشه اطراف یه خونه ایی روچک کنه. 8 تا جهت داره دیگه درکل. مورب ها و مستقیم ها.
حالا برای خونه اول که بالا و چپ نداره که مثلا!! این ها رو چک کن.


2012/7/13 farzane mokhtari <far.mo...@gmail.com>

Niloofar.Javadi

unread,
Aug 3, 2012, 1:09:03 AM8/3/12
to shariat...@googlegroups.com
سلام دوباره! چی شد بالاخره؟ 
اکسپت شد؟
....

farzane mokhtari

unread,
Aug 3, 2012, 2:55:44 AM8/3/12
to shariat...@googlegroups.com
سلام
بله متوجه شدیم مشکل کجاست، جاج ترتیب ورودی و خروجی رو طوری میخواست که تو صورت سوال چیزی در موردش نگفته بود!!! کدمون درست بود.

2012/8/3 Niloofar.Javadi <lavend...@gmail.com>
Reply all
Reply to author
Forward
0 new messages