944,043 Members | Top Members by Rank

Ad:
  • C++ Discussion Thread
  • Unsolved
  • Views: 8733
  • C++ RSS
You are currently viewing page 1 of this multi-page discussion thread
Nov 9th, 2006
0

Permutations of an N element array

Expand Post »
I am currently working on a program in C, that needs to calculate the permutations
of a n integer array. The approach that I have taken is using recursion, using a n-element array of counters incrementing the correct value each recursion,
so the subroutine calls itself x (x being the max # of permutations) number of times returning the next permutation.

For example: Information known ahead of time: n = 3(could be any value); n_array[0] = 3 (could be any value from 1 to 9), n_array[1] = 3, n_array[2] = 3:
so first permutation (does not have to be in this order):
0 0 0
0 0 1
0 0 2
0 1 0
0 1 1
0 1 2
0 2 0
0 2 1
0 2 2
1 0 0
1 0 1
1 0 1
1 1 1 etc.
That being said, I attempted to write a loop within the recursive function that looks like this,
C++ Syntax (Toggle Plain Text)
  1. for(i = 0; i <n; i++) {
  2. if(i == n-1) {
  3. count[i]++;
  4. }
  5. if(count[i] == n_array[i]) {
  6. count[i] = 0;
  7. count[i-1]++;
  8. }
  9. }
which gives the following:
0 0 0
0 0 1
0 0 2
0 1 0
0 1 1
0 1 2
0 2 0
0 2 1
0 2 2
0 3 0 -> incorrect
1 0 1
1 0 2 etc.
I realize what my loop is doing, but I can't think of a way to fix
it, any fresh ideas would be appriciated. Thanks in advance.
Last edited by WaltP; Nov 10th, 2006 at 3:02 am. Reason: Use regular CODE tags, not INLINECODE tags for code blocks
Similar Threads
Reputation Points: 10
Solved Threads: 0
Newbie Poster
merck120 is offline Offline
6 posts
since Nov 2006
Nov 10th, 2006
0

Re: Permutations of an N element array

this would be in the daniweb code snippet section.
Featured Poster
Reputation Points: 1536
Solved Threads: 431
Posting Expert
iamthwee is offline Offline
5,865 posts
since Aug 2005
Nov 10th, 2006
0

Re: Permutations of an N element array

Click to Expand / Collapse  Quote originally posted by iamthwee ...
this would be in the daniweb code snippet section.
Under what listing, I went through all snippets, and I did not see what I was looking for.
Reputation Points: 10
Solved Threads: 0
Newbie Poster
merck120 is offline Offline
6 posts
since Nov 2006
Nov 10th, 2006
0

Re: Permutations of an N element array

Featured Poster
Reputation Points: 1536
Solved Threads: 431
Posting Expert
iamthwee is offline Offline
5,865 posts
since Aug 2005
Nov 10th, 2006
0

Re: Permutations of an N element array

A non recursive way, if it suits your need:

http://www.daniweb.com/code/snippet533.html
Super Moderator
Featured Poster
Reputation Points: 3241
Solved Threads: 720
Failure as a human
~s.o.s~ is offline Offline
8,873 posts
since Jun 2006
Nov 10th, 2006
0

Re: Permutations of an N element array

Click to Expand / Collapse  Quote originally posted by ~s.o.s~ ...
A non recursive way, if it suits your need:

http://www.daniweb.com/code/snippet533.html
Not what I am looking for, look at my first post.
Reputation Points: 10
Solved Threads: 0
Newbie Poster
merck120 is offline Offline
6 posts
since Nov 2006
Nov 10th, 2006
0

Re: Permutations of an N element array

Click to Expand / Collapse  Quote originally posted by merck120 ...
Not what I am looking for, look at my first post.
So, your example don't even make sense

0 0 0
0 0 1
0 0 2
0 1 0
0 1 1
0 1 2
0 2 0
0 2 1
0 2 2
1 0 0
1 0 1 <- Why the repeat
1 0 1 <-Why the repeat
1 1 1

In fact your example doesn't even exhibit behaviour you would expect when using the word 'permutation'
Last edited by iamthwee; Nov 10th, 2006 at 3:29 pm.
Featured Poster
Reputation Points: 1536
Solved Threads: 431
Posting Expert
iamthwee is offline Offline
5,865 posts
since Aug 2005
Nov 10th, 2006
0

Re: Permutations of an N element array

Click to Expand / Collapse  Quote originally posted by iamthwee ...
So, your example don't even make sense

0 0 0
0 0 1
0 0 2
0 1 0
0 1 1
0 1 2
0 2 0
0 2 1
0 2 2
1 0 0
1 0 1 <- Why the repeat
1 0 1 <-Why the repeat
1 1 1

In fact your example doesn't even exhibit behaviour you would expect when using the word 'permutation'
I sorry, that line is a typo, and it should not be repeated, and yeah I know permutation is not the best word, for what I am doing, combinations, would probably be better.

it should be:
100
101
102
110
etc.
Last edited by merck120; Nov 10th, 2006 at 3:34 pm.
Reputation Points: 10
Solved Threads: 0
Newbie Poster
merck120 is offline Offline
6 posts
since Nov 2006
Nov 10th, 2006
0

Re: Permutations of an N element array

Ok, so do you mean the mathematical definition of the word combination.


Or are you going to change your mind again.
Featured Poster
Reputation Points: 1536
Solved Threads: 431
Posting Expert
iamthwee is offline Offline
5,865 posts
since Aug 2005
Nov 10th, 2006
0

Re: Permutations of an N element array

Click to Expand / Collapse  Quote originally posted by iamthwee ...
Ok, so do you mean the mathematical definition of the word combination.


Or are you going to change your mind again.
Yes, all of the mathematical combinations, per my fixed example.
Reputation Points: 10
Solved Threads: 0
Newbie Poster
merck120 is offline Offline
6 posts
since Nov 2006

This thread is more than three months old

No one has posted to this discussion for at least three months. Please let old threads die and do not reply to them unless you feel you have something new and valuable to contribute that absolutely must be added to make the discussion complete. Otherwise, please start a new thread in this forum instead.
Message:
Previous Thread in C++ Forum Timeline: web interface
Next Thread in C++ Forum Timeline: What's Wrong with my Array?





About Us | Contact Us | Advertise | Acceptable Use Policy
Forum Index | Build Custom RSS Feed


Follow us on Twitter


© 2011 DaniWeb® LLC