ACM学习-数字排列组合问题

来源:互联网 发布:凯恩帝数控车床编程 编辑:程序博客网 时间:2024/05/07 07:18
// ACM学习-数字排列组合问题.cpp : 定义控制台应用程序的入口点。
//


#include "stdafx.h"
#include<iostream>
#include<vector>
using namespace std;


int count1 = 0;
bool* visited;
int total;
void init(vector<int>& f){
for (int i = 0; i < total; i++){
visited[i] = false;
}
for (int i = 0; i < f.size(); i++){
visited[f[i]] = true;
}
}
void get(int n,vector<int>f){
for (int i = 0; i< total;i++){
init(f);
if (!visited[i])
{
vector<int> m = f;
m.push_back(i);
if (n == total)
{
for (int j = 0; j < total; j++)
{
cout << (m[j]+1) << ends;
}
cout << endl;
count1++;
cout << count1 << endl;
}
else{
get(n+1,m);
}




}

}




}
int _tmain(int argc, _TCHAR* argv[])
{
vector<int> f;
total = 6;
visited = new bool[total];
get(1,f);
delete[] visited;
return 0;

}





// ACM学习-数字排列组合问题1.cpp : 定义控制台应用程序的入口点。
//


#include "stdafx.h"
#include<iostream>
using namespace std;


const int total = 6;
int data[total];
void swap(int &x, int &y){
int temp = x;
x= y;
y = temp;
}
void solve(int n){
for (int i = 0; i < total;i++)
{
cout << data[i] << ends;
}
cout << endl;
for (int i = n; i < total; i++){
swap(data[n],data[i]);
solve(n+1);
}
}
int _tmain(int argc, _TCHAR* argv[])
{
for (int i = 0; i < total; i++){
data[i] = i+1;
}
solve(0);
return 0;
}



0 0
原创粉丝点击