您的位置:首页 > 其它

UVA 729 Hamming 距离问题

2012-08-08 14:36 267 查看
同上一题类似,全排列A与排列C的区别

没有用STL的 next_permutation

#include<iostream>
#include<cstdio>
#include<cstring>
#include<memory>
#include<queue>
#include<algorithm>
#include<string>
#include<cmath>
#include<stack>
using namespace std;

///
int N, H;
int p[20];
int A[20];
void print_permutation(int n, int *A, int *p, int cur)
{
int i, j;
if (cur == n)
{
for (i = 0; i < n; i++)
cout << A[i];
cout << endl;
}
else for (i = 0; i < n; i++)
{
if (!i || p[i] != p[i - 1])
{
int c1 = 0, c2 = 0;
for (j = 0; j < cur; j++)
{
if (A[j] == p[i])
c1++;
}
for (j = 0; j < n; j++)
{
if (p[i] == p[j])
c2++;
}
if (c1 < c2)
{
A[cur] = p[i];
print_permutation(n, A, p, cur + 1);
}
}
}
}
int main()
{
///
int i, j, k;
int nCases;
cin >> nCases;
while (nCases--)
{
cin >> N >> H;
memset(p, 0, sizeof(p));
j = N - 1;
for (i = H; i > 0; i--)
p[j--] = 1;
print_permutation(N, A, p, 0);
if (nCases != 0)
cout << endl;
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: