Algorytm na obcinanie kolumn i wierszy w dwuwymiarowej tablicy

0

Witam, mam np: taką tablicę dwuwymiarową :

2   0   8   9
3   0   1  20

13 12 17 18
1 2 3 4
2 0 7 9

Mam z nim odszukać najmniejszą wartość i poobcinać wiersze i kolumny w której się te wartości znajdują. Czyli z tej tablicy ma powstać w tym przypadku:

13 17 18
1 3 4

Obcinamy wiersze i kolumny gdzie są zera.

Wszystkie algorytmy już mam tzn. mam w tablicy "współrzędne" najmniejszych wartości, w tablicy "wsp":

[0] [1]
[1] [1]
[4] [1]

Mam także policzone ile kolumn / wierszy będzie usunięte (3 wiersze, gdyż są 3 różne liczby w pierwszej kolumnie wsp i 1 kolumna, gdyż są same jedynki (te same liczby) w drugiej kolumnie wsp).

Myślę teraz nad algorytmem jak powstawiać liczby bez tych z wsp. do nowej tablicy.

Plz help, cały kod mogę dać za kilka dni

0

Weź się za naukę! Takiego algorytmu nie trzeba wymyślać i tym bardziej nie ma go już zaimplementowanego w standardowych klasach javy. Nie trzeba być geniuszem by takie zadanie zrobić... Co za problem znaleźć tę wartość minimalną, zapisać sobie jej wiersz i kolumne a potem przepisać całą tabelkę od nowa o rozmiarze -1 i nie przepisując tamtej kolumny i wiersza...

1

@jegomama, zadanie nie jest takie trywialne jak sugerujesz. Ono jest bardzo proste, gdy wartość minimalna występuje tylko w jednym miejscu tablicy.
Ja by zrobił tak (input to wejściowa macierz, w to ilość wierszy, k ilość kolumn):

  1. wyznaczenie najmniejszej wartości m (trywialne).
  2. zapamiętanie numerów wierszy i kolumn gdzie jest wartość najmniejsza
HashSet<Integer> wiersze=new HashSet<Integer>();
HashSet<Integer> kolumny=new HashSet<Integer>();
....
    if(input[i][j]==m)
    {
         wiersze.ad(i);
         kolumny.add(j);          
    }
  1. zadeklarowanie tablicy wyjściowej output - będzie miała rozmiar (w-wiersze.size())x(k-kolumny.size())
  2. przepisanie
int row=0;
for(int i=0;i<input.length;i++)
if(!wiersze.contains(i))
{
    int col=0;
    for(int j=0;j<input[i].length;j++)
    {
         if(!kolumny.contains(j))
         {
              output[row][col]=input[i][j];
              col++;
         }
    }
    row++;
}
0

Widzę, że koledzy z PJWSTK znów atakują :)
THX bo

1 użytkowników online, w tym zalogowanych: 0, gości: 1