adi32 Δημοσ. 21 Οκτωβρίου 2011 Δημοσ. 21 Οκτωβρίου 2011 πχ εχω 5 αριθμους 100 150 230 240 300 Θελω να βρω ολους τους συνδυασμους αθροισματων τους ανα 1 2 3 ή και 4 ωστε το αθροισμα να βγαινει ή απο 990 ως 1000 ή απο 1490 ως 1500 πχ 10χ100=1000 150χ2 + 230χ2 = 990 100χ1 + 230χ4 + 240χ2=1500 Εχω κανει κατι σε access αλλα βγαζει πολλα διπλα αποτελεσματα και δεν ειναι ευχρηστο Μεχρι εδω νομιζω μπορει να βρεθει λυση Αφου βγουν οι συνδυασμοι να μπορω να διαλεξω αυτους που θελω ωστε να εχω πχ 10 φορες το 100 5 φορες το 230 .............
GKNSB Δημοσ. 21 Οκτωβρίου 2011 Δημοσ. 21 Οκτωβρίου 2011 πχ εχω 5 αριθμους 100 150 230 240 300 Θελω να βρω ολους τους συνδυασμους αθροισματων τους ανα 1 2 3 ή και 4 ωστε το αθροισμα να βγαινει ή απο 990 ως 1000 ή απο 1490 ως 1500 Εννοείς τους συνδυασμούς αθροισμάτων των πολλαπλάσιων των αρχικών αριθμών σωστά?
adi32 Δημοσ. 21 Οκτωβρίου 2011 Μέλος Δημοσ. 21 Οκτωβρίου 2011 ναι αυτο πχ συνολικα θελω 5 των 100 15 των 150 20 των 230 12 των 240 18 των 300
migf1 Δημοσ. 21 Οκτωβρίου 2011 Δημοσ. 21 Οκτωβρίου 2011 Δηλαδή ένα πρόγραμμα που θα του δίνεις ως input έναν αριθμό και το πλήθος πολλαπλασίων που θέλεις να σου αθροίσει, σου κάνει; ΥΓ. Δεν έχω καταλάβει τι ακριβώς θες να κάνεις (δεν με βοηθάει η περιγραφή σου).
Timonkaipumpa Δημοσ. 21 Οκτωβρίου 2011 Δημοσ. 21 Οκτωβρίου 2011 πχ εχω 5 αριθμους 100 150 230 240 300 Θελω να βρω ολους τους συνδυασμους αθροισματων τους ανα 1 2 3 ή και 4 ωστε το αθροισμα να βγαινει ή απο 990 ως 1000 ή απο 1490 ως 1500 πχ 10χ100=1000 150χ2 + 230χ2 = 990 100χ1 + 230χ4 + 240χ2=1500 Εχω κανει κατι σε access αλλα βγαζει πολλα διπλα αποτελεσματα και δεν ειναι ευχρηστο Μεχρι εδω νομιζω μπορει να βρεθει λυση Αφου βγουν οι συνδυασμοι να μπορω να διαλεξω αυτους που θελω ωστε να εχω πχ 10 φορες το 100 5 φορες το 230 ............. Θες να μπορείς να αθροίζεις τυχαία τους αριθμούς ή να τηρείται σειρά; Π.χ., εάν έχεις το 10, 11, 12, 13, 14, 15 Θες να μπορείς να κάνεις μόνο: 10 x 2 + 11 x 3 ή και: 10 x 2 + 15 x 4 Επίσης, θες επανάληψη ή όχι; Δηλαδή, είναι valid το: 10 x 2 + 10 x 3 + 10 x 4 ; Υ.Γ. Δοκίμασε την unique σε access για τα διπλά αποτελέσματα.
adi32 Δημοσ. 21 Οκτωβρίου 2011 Μέλος Δημοσ. 21 Οκτωβρίου 2011 πχ εχω σοκολατες των 100 150 230 240 300 γραμμαριων και εχω και κουτια που χωρανε η 1000γρ η 1500 γρ θελω να βρω συνδυασμους πως θα χωρισω τις σοκολατες ωστε να βαλω μεσα 5 των 100 15 των 150 20 των 230 12 των 240 18 των 300
migf1 Δημοσ. 21 Οκτωβρίου 2011 Δημοσ. 21 Οκτωβρίου 2011 Μιας και είμαστε σε φόρουμ προγραμματισμού, θα μπορούσες να μου αποσαφηνίσεις τι ακριβώς θα δέχεται ένα τέτοιο πρόγραμμα ως input και τι ακριβώς θέλεις να σου βγάζει ως output; Θα βοηθούσε πολύ κάτι τέτοιο (π.χ. τα νούμερα που έχεις δώσει στο προηγούμενο ποστ είναι fixed? ή θες να μπορεί να σου παρουσιάζει κι άλλες εναλλακτικές διανομής μέσα στα κουτιά; ) EDIT: Άκυρο, μόλις είδα πως θες να σου βγάζει όλους τους πιθανούς συνδυασμούς (το έχεις γράψει )
adi32 Δημοσ. 21 Οκτωβρίου 2011 Μέλος Δημοσ. 21 Οκτωβρίου 2011 Input θα δινεις τα γραμμαρια των ειδων 100 120 150 300.... και ποσα θες απο το καθενα Τα σταθερα ειναι τα αθροισματα στο 1000 η στο 1500
migf1 Δημοσ. 21 Οκτωβρίου 2011 Δημοσ. 21 Οκτωβρίου 2011 Το input χωράει εγγυημένα ή θα πρέπει να γίνεται κι αυτός ο έλεγχος;
GKNSB Δημοσ. 21 Οκτωβρίου 2011 Δημοσ. 21 Οκτωβρίου 2011 > public class Main { public static void main(String[] args) { int a = 100; int b = 150; int c = 230; int d = 240; int e = 300; int i,j,k,l,m; int counter = 0; for(i=0;i<=15;i++){ for (j=0;j<=15;j++){ for (k=0;k<=15;k++) { for (l=0;l<=15;l++) { for (m=0;m<=15;m++){ if ((i*a)+(j*+(k*c)+(l*d)+(m*e) >= 990 && (i*a)+(j*+(k*c)+(l*d)+(m*e) <= 1000) { if (!(i!=0 && j!=0 && k!=0 && l!=0 && m!=0)) { System.out.println("Combination "+i+"x"+a+" + "+j+"x"+b+" + "+k+"x"+c+" + "+l+"x"+d+" + "+m+"x"+e+" equals "+ (i*a+j*b+k*c+l*d+m*e) ); counter = counter +1; } } if ((i*a)+(j*+(k*c)+(l*d)+(m*e) >= 1490 && (i*a)+(j*+(k*c)+(l*d)+(m*e) <= 1500) { if (!(i!=0 && j!=0 && k!=0 && l!=0 && m!=0)) { System.out.println("Combination "+i+"x"+a+" + "+j+"x"+b+" + "+k+"x"+c+" + "+l+"x"+d+" + "+m+"x"+e+" equals "+ (i*a+j*b+k*c+l*d+m*e) ); counter = counter +1; } } } } } } } System.out.println("Number of combinations =" + counter); } } Κάτι τέτοιο θέλεις δηλαδή? Δίνει ένα αποτέλεσμα της μορφής Combination 0x100 + 0x150 + 0x230 + 0x240 + 5x300 equals 1500 Combination 0x100 + 0x150 + 0x230 + 5x240 + 1x300 equals 1500 Combination 0x100 + 0x150 + 1x230 + 4x240 + 1x300 equals 1490 Combination 0x100 + 0x150 + 2x230 + 1x240 + 1x300 equals 1000 Combination 0x100 + 0x150 + 3x230 + 0x240 + 1x300 equals 990 Combination 0x100 + 1x150 + 0x230 + 1x240 + 2x300 equals 990 Combination 0x100 + 2x150 + 0x230 + 0x240 + 4x300 equals 1500 Combination 0x100 + 2x150 + 0x230 + 5x240 + 0x300 equals 1500 . . . Combination 10x100 + 0x150 + 0x230 + 0x240 + 0x300 equals 1000 Combination 11x100 + 1x150 + 0x230 + 1x240 + 0x300 equals 1490 Combination 12x100 + 0x150 + 0x230 + 0x240 + 1x300 equals 1500 Combination 12x100 + 2x150 + 0x230 + 0x240 + 0x300 equals 1500 Combination 15x100 + 0x150 + 0x230 + 0x240 + 0x300 equals 1500 Number of combinations =77 Σου εμφανίζει μόνο όσους συνδυασμούς αποτελούνται από 1,2,3 ή 4 πολλαπλάσια. (το ένα δηλαδή από τα 5 να είναι 0)
migf1 Δημοσ. 21 Οκτωβρίου 2011 Δημοσ. 21 Οκτωβρίου 2011 Πάντως στη γενική του μορφή αυτό ονομάζεται Bin Packing Problem, και ανήκει στην γενικότερη κατηγορία των συνδυαστικών NP-hard προβλημάτων. Για βέλτιστες λύσεις χρειάζεται... δουλίτσα: http://en.wikipedia....packing_problem
adi32 Δημοσ. 21 Οκτωβρίου 2011 Μέλος Δημοσ. 21 Οκτωβρίου 2011 migf1 : Το κακο ειναι οτι το input δε χωραει εγγυημενα (αν δε γινεται με καμια δυναμη μπορει να αυξηθει καποιο απο τα ειδη πχ αντι για 20 σοκολατες των 300γρ να μπουνε 21-22, παντα περισσοτερο και οχι λιγοτερο) GKNSB : ναι κατι τετοιο αλλα σε καποιες περιπτωσεις πρεπει να ειναι η στο αθροισμα 1000 ή στο 1000 και 1500 δηλαδη υπαρχει περιπτωση να ειναι μονο στο 1000 ολα ή να ειναι και στο 1000 και στο 1500
GKNSB Δημοσ. 21 Οκτωβρίου 2011 Δημοσ. 21 Οκτωβρίου 2011 Ωραία σε αυτή την περίπτωση απλά παίζεις με τα if. Τι θέλεις να κάνεις ακριβώς ακόμα δεν έχω καταλάβει. Θέλεις να παίρνει όλα τα στοιχεία σαν input? Θέλεις να είναι στάνταρ τιμές? Οι σχέσεις μεταξύ τους και οι παράμετροι των συγκρίσεων θέλεις να αλλάζουν ανάλογα με κάποιο input από το χρήστη?
adi32 Δημοσ. 21 Οκτωβρίου 2011 Μέλος Δημοσ. 21 Οκτωβρίου 2011 To input θα ειναι καποια γραμμαρια οχι στανταρ πχ 15 των 100 20 των 230 14 των 180 σε κουτια των 1000γρ μονο ή πχ 10 των 120 20 των 250 16 των 190 12 των 230 σε κουτια των 1000γρ ή των 1500γρ τα γραμμαρια του καθε ειδους θα τα δινει ο χρηστης
GKNSB Δημοσ. 21 Οκτωβρίου 2011 Δημοσ. 21 Οκτωβρίου 2011 Ωραία. Και σαν αποτέλεσμα τι θα δίνει? Με πόσους τρόπους μπορεί να μπουν αυτά τα αντικείμενα στα κουτιά?
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα