armo
Dołączył: 14 Paź 2010 Posty: 40
Przeczytał: 0 tematów
Pomógł: 1 raz Ostrzeżeń: 0/5
|
Wysłany: Nie 11:32, 17 Kwi 2011 Temat postu: Zadanie 1 wszystkie ciąg k-elementowe z liczb 1..n |
|
|
Zadanie 1
Kod: |
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package zwspui1zad1ciagikzliczbn;
import java.util.Arrays;
/**
*
* @author amanko
*/
public class CiagiKZliczbN {
/**
* @param args the command line arguments
* 1. Wygenerować wszystkie ciągi długości k zbudowane z liczb 1,2,...,n
// sposób leksykograficzny
//
// dla n=4, k=3
// 1,1,1
// 1,1,2
// 1,1,3
// 1,1,4
// 1,2,1
// ....
// (4,4,4)
//
// X[1..k]
//
// ciągi drukujemy a nie zpamiętujemy
//
// ZAD OPISAĆ SŁOWAMI
// krok początkowy, wypelniamy ciag k elementowy wartosciami 1
// powtarzamy
// uwzględniając elementy ciągu od końca sprawdzamy czy elementy mają wartość n
// wtedy zmieniamy ich wartość na 1
// nastepnie kontynuujemy sprawdzanie poprzednich elementow ciagu i jesli maja wartosc n to tez zaminemay na 1 i przechodzimy do poprzedniego
// jesli wyjdziemy poza zakres to opuszczamy petle
// jesli wyszlismy poza zakres to znaczy ze mamy osttani element i nie mozemy zwiekszyc wiec zwracamy null jako straznik konca szeregu ciagow
// jesli jestesmy w zakresie to zwiekszamy znaleziony mniejszy niz n element ciagu o 1 i konczymy zwiekszanie
//
// ZAD ZAPISAC KROKI W PSEUDOKODZIE
// ciag <- generujPierwszy(K,N)
// repeat
// drukuj(ciag)
// ciag <- zwieksz(ciag)
// until ciag<>null
//
// generujPierwszy(K,N)
// for i <- 1 to k
// ciag[i] <- 1
// return ciag
//
// zwieksz(ciag[])
// indeksDoZwiekszenia = k //// ciag.length-1
// while (indeksDoZwiekszenia>=1) and (ciag[indeksDoZwiekszenia]==n)
// ciag[indeksDoZwiekszenia] <- 1
// indeksDoZwiekszenia <- indeksDoZwiekszenia -1
// if (indeksDoZwiekszenia<1)
// then
// return null;
// else
// ciag[indeksDoZwiekszenia] <- ciag[indeksDoZwiekszenia] + 1
// return ciag
//
//
//
// ZAD ZAIMPLEMENTOWAĆ
//
*/
public static void main(String[] args) {
int k = 6; // długośc ciągów
int n = 3; // maksymalna wartość elementu ciągu
int ciag[] = new int[k]; // kolejny ciąg do drukowania
int iW; // indeks w ciągu poszukiwany do zwiększenia wartości
Arrays.fill(ciag, 1);
do{
System.out.println(Arrays.toString(ciag));
iW = k-1;
while( (iW>=0) && (ciag[iW]==n) ){
ciag[iW]=1;
iW--;
}
if(iW>=0)
ciag[iW]++;
}while(iW>=0);
}
}
|
Post został pochwalony 0 razy
|
|