전배열 & 8 황후 문제
11843 단어 전체 배열
1 #include <iostream>
2
3 using namespace std;
4 static int num = 0;
5 bool check(int * arry, int length)
6 {
7 int i, j;
8 for(i = 0; i < length; ++i)
9 {
11 for(j = i+1; j < length; ++j)
12 {
13 if(arry[i] - arry[j] == j - i || arry[i] - arry[j] == i - j)
14 return false;
15 }
16 }
17 return true;
18 }
19 void permutation(int * arry, int start, int length)
20 {
21 if(start == length && check(arry, length))
22 {
23 for(int j = 0; j < length; ++j)
24 cout << arry[j] << " ";
25 cout << endl;
26 num++;
27 return;
28 }
29 for(int i = start; i < length; ++i)
30 {
31 int temp = arry[start];
32 arry[start] = arry[i];
33 arry[i] = temp;
34 permutation(arry, start+1, length);
35 temp = arry[start];
36 arry[start] = arry[i];
37 arry[i] = temp;
38 }
39 }
40 int main()
41 {
42 int n;
43 while(cin >> n)
44 {
45 int * arry = new int[n];
46 for(int i = 0; i < n; ++i)
47 arry[i] = i + 1;
48 num = 0;
49 permutation(arry, 0, n);
50 cout << "The number of total solutions is " << num << endl;
51 delete arry;
52 }
53 return 0;
54 }
1 #include <iostream>
2
3 using namespace std;
4
5 void permutation(int * arry, int start, int length)
6 {
7 if(start == length)
8 {
9 for(int j = 0; j < length; ++j)
10 cout << arry[j] << " ";
11 cout << endl;
12 return;
13 }
14 for(int i = start; i < length; ++i)
15 {
16 int temp = arry[start];
17 arry[start] = arry[i];
18 arry[i] = temp;
19 permutation(arry, start+1, length);
20 temp = arry[start];
21 arry[start] = arry[i];
22 arry[i] = temp;
23 }
24 }
25 int main()
26 {
27 int n;
28 while(cin >> n)
29 {
30 int * arry = new int[n];
31 for(int i = 0; i < n; ++i)
32 arry[i] = i + 1;
33 permutation(arry, 0, n);
34 delete arry;
35 }
36 return 0;
37 }
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Q7.1.1 한 그룹의 수의 조합을 모두 열거하다제목: 하나의 수조 안의 수의 조합을 모두 열거합니다. 예를 들어 1과 2열은 1,2,12,21입니다. 분석: 이 문제는 여러 가지 확장이 있는데, 1, 중복된 원소의 수의 조합이 없다(자집의 전체 배열 포함). 2...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.