Výpis kombinací čísel za podmínky... – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Výpis kombinací čísel za podmínky... – Java – Fórum – Programujte.comVýpis kombinací čísel za podmínky... – Java – Fórum – Programujte.com

 

PetrP
~ Anonymní uživatel
4 příspěvky
30. 10. 2011   #1
-
0
-

Dobrý den,

potřebuji poradit kde začít... Mám vypsat všechny kombinace pro čísla 1,2,3,4,5 avšak ve sloupci 1 nesmí být číslo 1...  kolik bude těchto kombinací?

např pro čísla 1,2,3:
1-2-3 - zadání
2-3-1
3-1-2

jsou pouze 2 kombinace, pro čísla 1-4 je těchto kombinací 9... Děkuji

Nahlásit jako SPAM
IP: 82.144.159.–
PetrP
~ Anonymní uživatel
4 příspěvky
30. 10. 2011   #2
-
0
-

tak jsem si udělal soubor 1000 hodnot, které potom pomocí linuxu a příkazu UNIQ a SORT seřadím podle velikosti a vymažu z něj duplicity, ted ale nevím, jak to udělat, aby se mi neopakovaly čísla v řádku a nebyly stejná čísla pod sebou?

Nahlásit jako SPAM
IP: 82.144.159.–
PetrP
~ Anonymní uživatel
4 příspěvky
30. 10. 2011   #3
-
0
-

public static void main(String[] args) {
  Random rd=new Random();
  int [] nahCisla=new int[4];
       
for(int q=0;q<1000;q++){
       for(int i=0;i<1000;i++){
       
      nahCisla[0]=rd.nextInt(4);
      nahCisla[1]=rd.nextInt(4);
      nahCisla[2]=rd.nextInt(4);
      nahCisla[3]=rd.nextInt(4);
       }
       if(nahCisla[0]==0){}else{
        if(nahCisla[1]==0){}else{
         if(nahCisla[2]==0){}else{
          if(nahCisla[3]==0){}else{
           for(int i=0;i<4;i++){
                System.out.print(nahCisla[i]);}
                System.out.println ("");
              
          }
         }
        }
       }
}

Nahlásit jako SPAM
IP: 82.144.159.–
zlz
~ Anonymní uživatel
634 příspěvků
30. 10. 2011   #4
-
+1
-
Zajímavé

Tu "kombinaci" budeš muset víc popsat.

Proč pro 1,2,3 nebude i 2-1-3 a 3-2-1 ?

Nahlásit jako SPAM
IP: 213.211.51.–
Tchibo0
Návštěvník
30. 10. 2011   #5
-
0
-

#1 PetrP
Snad sem se trefil

public static boolean opakovani(String s) {
		int a = 0, b = 0, c = 0, d = 0, e = 0, i = 0;
		while (true) {
			if (i >= s.length())
				break;
			int q = Integer.parseInt(s.substring(i, i + 1));
			if (q == 1)
				a++;
			else if (q == 2)
				b++;
			else if (q == 3)
				c++;
			else if (q == 4)
				d++;
			else if (q == 5)
				e++;
			if (a > 1 || b > 1 || c > 1 || d > 1 || e > 1)
				return true;
			i++;
		}
		return false;
	}

	public static boolean indexOf(String s, char[] data) {
		for (int i = 0; i < 8; i++) {
			if (s.indexOf(data[i]) != -1)
				return true;
		}

		return false;
	}

	public static void main(String[] args) {
		String smax = "1";
		char data[] = { '2', '3', '4', '5', '6', '7', '8', '9' };
		int sum = 1;
		for (int q = 2; q <= 5; q++) {
			data[q - 2] = '0';
			smax = String.valueOf(q) + smax;
			int max = Integer.parseInt(smax);
			sum += q;
			for (int i = 1; i <= max; i++) {
				String s = String.valueOf(i);
				if (indexOf(s, data) || s.length() < q || s.startsWith("1"))
					continue;
				int temp = 0;
				for (int a = 0; a < s.length(); a++)
					temp += Integer.parseInt(s.substring(a, a + 1));
				if (temp == sum && !opakovani(s))
					System.out.println(s);
			}
			System.out.print("\n");
		}
	}
Nahlásit jako SPAM
IP: 109.80.248.–
Tchibo
PetrP
~ Anonymní uživatel
4 příspěvky
31. 10. 2011   #6
-
0
-

Téměř dokonalé! Jen na 1 pozici nesmí být 1, na 2 pozici nesmí být 2..... ale to už si promažu ručně raději :) díky!

Nahlásit jako SPAM
IP: 82.144.159.–
sleepy0
Stálý člen
31. 10. 2011   #7
-
0
-

#1 PetrP

Tak napr. ja by som to riesil: 

public class Main {
    static int sum=0;
	
	public static void main(String[] args) {
            int[] a = {1,2,3,4,5};
            
            psi ( 0, a, a.length );
            System.out.println(sum);
	}

        public static void psi ( int l, int[] a, int n ){
            
            for ( int k = l; k>=0; k-- ){
                int[] c = new int[a.length];
                c = switchNum(k, l, a);
                if ( k!=l && a[0]!=1 ){ // sem mozte dodat dodatocne podmienky, ako napr. a[0]!=1
                    printA ( c );
                    sum++;
                }
                if (l+1 < n) psi ( l+1, c, n );
            }


        }

        public static void printA ( int[] a ){
            for(int i=0; i< a.length; i++)
                System.out.print(a[i]+"\t");
            System.out.println();
        }

        public static int[] switchNum ( int i, int j, int[] a ){
            if(j==i) return a;
            int tmp = a[i];
            a[i] = a[j];
            a[j] = tmp;
            return a;
        }
}
Nahlásit jako SPAM
IP: 213.215.67.–
sleepy0
Stálý člen
31. 10. 2011   #8
-
0
-

#7 sleepy
aha pardon toto neriesi Vas problem..., som si zle precital zadanie.

Nahlásit jako SPAM
IP: 213.215.67.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 70 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý