algorytm.org

Implementacja w Java



Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Ciąg graficzny(2) - Implementacja w Java
Ocena użytkownikóww: *****  / 1
SłabyŚwietny
Nadesłany przez Tomasz Lubiński, 09 sierpnia 2005 01:00
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.

Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.

Graficzny2.java:
/**
 * www.algorytm.org
 * algorytm testowania czy podany ciąg 
 * stopni wierzcholków grafów jest graficzny
 * Tomasz Lubiński (c)2005
 */
public class Graficzny2 {

	private static int c[];

	//sortuje ciąg nierosnąco
	private static void sort(int c[], int n) {
		int j,k;
		int flag;
		
		flag=1;
		while (flag==1) {
			flag=0;
	        for (j=0; j<n-1; j++)
	        	if (c[j]<c[j+1]) {
	        		k=c[j];
	        		c[j]=c[j+1];
	        		c[j+1]=k;
	        		flag=1;
	        	}
		}
	}

	public static void main(String[] args) {

		int graficzny;
		int n,i,s;
		
		//pobierz dane
		System.out.println("Podaj liczbe wierzcholkow grafu");
		n = Console.readInt("?");
		c = new int[n];
		for (i=0; i<n; i++) {
			c[i] = Console.readInt("Podaj stopien wierzcholka " + (i+1));
        }
		
		//algorytm testowania czy podany ciąg stopni wierzcholkow jest graficzny
		graficzny=1;
		
		//sprawdz czy suma ciągu jest liczbą parzystą
		s=0;
		for (i=0; i<n; i++) 
			s+=c[i];
		if ((s%2)!=0) 
			graficzny=0;
		else 
			sort(c,n); //posortuj ciąg nierosnąco jeżeli suma jest liczbą parzystą
		while ((c[0]!=0) && (graficzny==1)) {
			s=0;
			for (i=1; i<n; i++)
				if (c[i]!=0) 
					s++;
			if (c[0]>s) 
				graficzny=0;
			else 
				for (i=1; i<=c[0]; i++) 
					c[i]--;
			c[0]=0;
			sort(c,n);
		}
		
		//podaj użytkownikowi wynik
		if (graficzny == 1) 
			System.out.println("Podany ciąg jest graficzny");
		else 
			System.out.println("Podany ciąg nie jest graficzny");
	}
}
Dodaj komentarz