Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Έχω ενα array ( πχ. { 12,43,11,45,14,54,65 } ) και θελω να φτιαξω ενα loop που το χωρίζει στα 3 αλλά με κάθε δυνατή περιπτωση . πχ : "12 43 11 45 14 54 65" ή "12 43 11 45 14 54 65 " ή "12 43 11 45 14 54 65" . σε περίπτωση που αναρωριεσται δεν είναι homework είναι απο ενα πρόβλημα που προσπαθω να λύσω οποτε δεν θέλω τέτοια comments . thanks in advance

Δημοσ.

Έχω ενα array ( πχ. { 12,43,11,45,14,54,65 } ) και θελω να φτιαξω ενα loop που το χωρίζει στα 3 αλλά με κάθε δυνατή περιπτωση . πχ : "12 43 11 45 14 54 65" ή "12 43 11 45 14 54 65 " ή "12 43 11 45 14 54 65" . σε περίπτωση που αναρωριεσται δεν είναι homework είναι απο ενα πρόβλημα που προσπαθω να λύσω οποτε δεν θέλω τέτοια comments . thanks in advance

 

Δε μπορώ να καταλάβω το χώρισμα, δώσε κάποιο καλύτερο παράδειγμα, ποιες περιπτώσεις εννοείς?

  • Like 2
Δημοσ.

Θέλω να χωρισω ενα array σε 3 όχι απαραίτητα ισα κομματια η υπο array αλλά θέλω να τα χωρισω με όλες τις δυνατές περιπτώσεις δηλαδή στη μια περιπτωση το ενα κομματι είναι μεγαλύτερο απο τα αλλά το άλλο μικροτερο , στην αλλη το αντιθετο κτλ . θέλω ας πούμε να κάνω print όλα αυτά τα υποσύνολα

Δημοσ.

Εγώ πάλι πιστεύω οτι τα έβαλε σωστά, απλά ξέχασε να τοποθετήσει της παρανθέσεις, ωστε να τα χωρίσει σε 3 υποσύνολα. Δηλαδή κάτι σαν μη επικαλυπτόμενα υποσύνολα αλλά να κρατιέται η σειρά:

 

οπότε here is my pseudocode, (matlab, c, script, οτι να ναι όπως μου έρχονται)

A=[1,12,3,12,3,12,31,3,123,13,1]
N = getArrayLength()

Allcombinations // double array
N_comb=0
for i=1….N
	for j=1….N-i
		k=N-i-j
		if (k>0)
			N_comb++
			Allcombinations(N_comb,1)=A(1:i)
			Allcombinations(N_comb,2)=A(i+1:j+i)
			Allcombinations(N_comb,3)=A(i+j+1:N)
		fi
	end
end
damn άτυχος... :P
Δημοσ.

Λοιπόν η λύση που παραθέτω δίνει λύση στο εξής πρόβλημα: Βρες όλα τα δυνατά 3 υποσύνολα ενός συνόλου. Δεν πρέπει να είναι και πολύ αποδοτική λύση αλλά και το ίδιο το πρόβλημα δεν ενδύκνειται για την αποδοτικότητα του.
 

Η λογική που μου έρχεται είναι η εξής:

 

για λόγους ευκολίας θα υποθέσω οτι το μέγεθος του Α είναι 8

 

F=boolean(2^8,size(A))

S=boolean(2^8,size(A))

T=boolean(2^8,size(A))

 

 

φτιάξε όλους τους δυνατούς συνδυασμούς πινάκων boolean. δηλαδή

 

0,0,0,0,0,0,0,0

0,0,0,0,0,0,0,1

0,0,0,0,0,0,1,0

.

.

.

1,1,1,1,1,1,1,1

 

σύνολο 2^8

 

οπότε έχεις τρία τέτοια. F,S,T

 
for i=1:2^8
    for j=1:2^8
       for k=1:2^8
	 if (sum(F(i,)>0)&&(sum(S(j,)>0)&&(sum(T(k,)>0)&&(sum(F(i,+sum(S(j,+sum(T(k,==8)
		print A(F(i,) , A(S(j,) ,  A(T(k,)
	 end
      end
   end
end

Δεν φαίνεται καλά ο έλεγχος

if (sum(F(i,)>0)&&(sum(S(j,)>0)&&(sum(T(k,)>0)&&(sum(F(i,+sum(S(j,+sum(T(k,==8)

Ξέρω οτι παράγω πολλές περιπτώσεις που δεν θα μπουν καν στο if, αν μπορεί κάποιος να το βρει με πιο μεθοδικό τρόπο θα χαρώ πολύ να μάθω.

Δημοσ.

Έχω ενα array ( πχ. { 12,43,11,45,14,54,65 } ) και θελω να φτιαξω ενα loop που το χωρίζει στα 3 αλλά με κάθε δυνατή περιπτωση . πχ : "12 43 11 45 14 54 65" ή "12 43 11 45 14 54 65 " ή "12 43 11 45 14 54 65" . σε περίπτωση που αναρωριεσται δεν είναι homework είναι απο ενα πρόβλημα που προσπαθω να λύσω οποτε δεν θέλω τέτοια comments . thanks in advance

 

Αν έχεις array, τότε τα στοιχεία του έχουν μια σειρά, δηλαδή θα είναι διατεταγμένα, [ a[0], a[1], ..., a[n] ] (πλήθος n+1). Οπότε για να διακρίνεις 3 κομμάτια, θες δυο δείκτες p, q με 0<p<q<n που θα δείχνουν τα τελευταία στοιχεία του κάθε κομματιού:

 

κομμάτι 1: [ a[0], ..., a[p] ], κομμάτι 2: [ a[p+1], ..., a[q] ], κομμάτι 3: [ a[q+1], ..., a[n] ]

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...