Pereiti prie turinio

Konkursinė užduotis (Atlikti)


Rekomenduojami pranešimai

ant greicio, bet turetu veikti

using System;
using System.IO;

 

           var lines = File.ReadAllLines("U3.txt"); //isgauk visas eilutes
           int total = int.Parse(lines[0]);
           int lastLine = 1;
           for(int i = 0; i < total; i++)
           {
               var tmpSplit = lines[lastLine++].Split(' ');
               int xSize = int.Parse(tmpSplit[0]);
               int ySize = int.Parse(tmpSplit[1]);
               char[,]  map = new char[xSize, ySize]; //salu zemelapis
               bool[,] parsedMap = new bool[xSize, ySize]; //pazymek ka jau tikrinom, kad netikrintumem antra karta
               //uzpildyk duomenis
               for (int x = 0; x < xSize; x++)
               {
                   var line = lines[lastLine++];
                   for(int y = 0; y < ySize; y++)
                   {
                       map[x, y] = line[y];
                   }
               }

               Func<int, int, bool> boundsCheck = (cur, max) => { if (cur < 0 || cur >= max) return false; return true; };
               //recursive funkcija, patikrinia blokus aplink save ar jie yra 1 ar 0, jei 1 issikviecia dar karta ant naujos pozicijos
               Func<int, int, int, int> checkSurroundings = null;
               checkSurroundings = (curSize, x, y) => {
                   for (int offx = -1; offx < 2; offx++)
                   {
                       if (boundsCheck(x + offx, xSize))
                       {
                           int curX = x + offx;
                           for (int offy = -1; offy < 2; offy++)
                           {
                               if (boundsCheck(y + offy, ySize))
                               {
                                   int curY = y + offy;
                                   if (map[curX, curY] == '1' && !parsedMap[curX, curY])
                                   {
                                       parsedMap[curX, curY] = true;
                                       curSize = checkSurroundings(curSize + 1, curX, curY);
                                   }
                               }
                           }
                       }
                   }
                   return curSize;
               };

               //tikrink
               int totalCount = 0;
               int maxSize = 0;
               for (int x = 0; x < xSize; x++)
               {
                   for(int y = 0; y < ySize; y++)
                   {
                       if(map[x, y] == '1' && !parsedMap[x, y])
                       {
                           totalCount++;
                           var res = checkSurroundings(0, x, y);
                           if (res > maxSize) maxSize = res;
                       }
                   }
               }
               Console.WriteLine("{0} {1}", totalCount, maxSize);
           }
           Console.ReadLine();

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

×
×
  • Pasirinkite naujai kuriamo turinio tipą...