UVa10776 - Determine The Combination(有重复元素的组合问题)

简介: UVa10776 - Determine The Combination(有重复元素的组合问题)
#include <cstdio>#include <cstring>#include <string>#include <algorithm>#include <cctype>usingnamespacestd;
constintN=26;
strings;
intr;
intcnt[N];
intnumber[N], n;
charch[N];
boolinput();
voidsolve();
voiddfs(intcur, intdep, strings);
intmain()
{
#ifndef ONLINE_JUDGEfreopen("d:\\OJ\\uva_in.txt", "r", stdin);
#endifwhile (input()) {
solve();
    }
return0;
}
boolinput()
{
charbuf[N+10];
if (scanf("%s%d", buf, &r) !=2) returnfalse;
s=buf;
sort(s.begin(), s.end());
memset(cnt, 0x00, sizeof(cnt));
for (size_ti=0; i<s.length(); i++) {
cnt[s[i] -'a']++; 
    }
n=0;
for (inti=0; i<N; i++) {
if (cnt[i] !=0) {
number[n] =cnt[i];
ch[n++] =i+'a';
        }
    }
returntrue;
}
voiddfs(intcur, intdep, strings)
{
if (dep==r) {
printf("%s\n", s.c_str());;
return;
    }
for (inti=cur; i<n; i++) {
if (number[i] >0) {
number[i]--;
stringtmp=s;
tmp.append(1, ch[i]);
dfs(i, dep+1, tmp);
number[i]++;
        }
    }
}
voidsolve()
{
dfs(0, 0, "");
}
目录
相关文章
UVa872 - Ordering(拓扑排序)
UVa872 - Ordering(拓扑排序)
59 0
|
开发框架 .NET
poj 3468 A Simple Problem with Integers线段树区间修改
题目意思很简单,有N个数,Q个操作, Q l r 表示查询从l到r 的和,C l r v 表示将从l到r 的值加上v,明显的线段树,不知道线段树的人肯定暴力,肯定超时,哈哈!!
33 0
|
算法
The kth great number(小根堆思想,模板题)
The kth great number(小根堆思想,模板题)
48 0
The kth great number(小根堆思想,模板题)
|
Unix Python
LeetCode 71. Simplify Path
给定文件的绝对路径(Unix下的路径)字符串,简化此字符串。
84 0
LeetCode 71. Simplify Path
AtCoder Beginner Contest 216 G - 01Sequence (并查集 贪心 树状数组 差分约束)
AtCoder Beginner Contest 216 G - 01Sequence (并查集 贪心 树状数组 差分约束)
152 0
AtCoder Beginner Contest 203(Sponsored by Panasonic) D.Pond(二分+二维前缀和)
AtCoder Beginner Contest 203(Sponsored by Panasonic) D.Pond(二分+二维前缀和)
88 0
AtCoder Beginner Contest 203 Pond(二分+二维前缀和)
大体思路: 二分,将原矩阵根据二分的值变成01矩阵,如果元素值> val 就变为1,否则0 对于k * k 的矩阵,统计区域内元素之和,如果 sum < ⌊k2 / 2⌋ + 1,意味着当前k * k矩阵的中位数小于x,而x是我们的答案(最小中位数), ①sum < ⌊k2 / 2⌋ + 1 情况下x取得太大,r = mid ②反之,x还可能取更小的,l = mid 但是需要注意下l的初始值,当取0 or 1的时候是会wa掉的:
241 0
AtCoder Beginner Contest 203 Pond(二分+二维前缀和)
|
开发者
牛客第六场-Combination of Physics and Maths
题意:选出一个子矩阵,使得所求的压强最大,压强是指这个子矩阵中每个元素之和 / 这个子矩阵最下面一行的元素之和
59 0
牛客第六场-Combination of Physics and Maths
POJ 1306 Combinations
POJ 1306 Combinations
112 0