In: Computer Science
CS 400 Assignment 5 Recursive/Backtracking: Generating Permutations WRITE CODE IN C++ PROGRAMMING LANGUAGE WITH COMMENTS INCLUDED Description: Mimic the code for N-queen problem (https://introcs.cs.princeton.edu/java/23recursion/Queens.java.html), develop a program that generates all permutations for the set {1, 2, 3, 4, 5}. The output should contain all 5! = 120 permutations. Output Sample: P#1: 1 2 3 4 5 P#2: 1 2 3 5 4 P#3: 1 2 4 3 5 ... P#120: 5 4 3 2 1 Hint: - Thoroughly study the N-queen problem first. - The code for N-queen is very close to the code generating permutations, just some helper functions away. - Keep the structure of the enumerate() function. You may change the function head to take in the array size. - Implement printPermutation() function and use it to replace printQueens(). - Implement isConsistent() function for permutation check. This check should be easier than N-queen consistent check. File_name: - permutation.cpp Grading: - compilable and meaningful attemps: 20 points. - structure of enumerate(): 30 points - helper functions: 40 points. - comments, file names and indentation: 10 points.
#include <iostream> using namespace std; void printPermutation(int q[], int n) { for(int i=0; i<n; i++) { cout << q[i] << " "; } cout << endl; } bool isValid(int q[], int k, int n) { int counts[n+1]; for(int i=0; i<=n; i++) { counts[i] = 0; } for(int i=0; i<k; i++) { if(counts[q[i]] > 0) { return false; } counts[q[i]] += 1; } return true; } void enumerate(int q[], int n, int k) { if (k == n) printPermutation(q, n); else { for (int i = 1; i <= n; i++) { q[k] = i; if(isValid(q, k+1, n)) { enumerate(q, n, k+1); } } } } int main() { int n; cout << "Enter n: "; cin >> n; int data[n]; enumerate(data, n, 0); }
************************************************** Thanks for your question. We try our best to help you with detailed answers, But in any case, if you need any modification or have a query/issue with respect to above answer, Please ask that in the comment section. We will surely try to address your query ASAP and resolve the issue.
Please consider providing a thumbs up to this question if it helps you. by Doing that, You will help other students, who are facing similar issue.