pku acm 1833
2012-06-05 10:37
260 查看
提交了N次,还是TLE。郁闷~~
事实证明要选C++ 无语
事实证明要选C++ 无语
#include <stdio.h> #include <stdlib.h> inline void swap(int *a, int i, int j) { int temp; temp = a[j]; a[j] = a[i]; a[i] = temp; } //找比k大的最小数 前提:a[b...e]是倒序的 并且总是存在一个比k大的数 int find(int *a, int b, int e, int k) { if (b == e) return b; if (b+1 == e) { if (a[e]>k) return e; return b; } int mid=(b+e)/2; if (a[mid]<k) return find(a, b, mid-1, k); return find(a, mid, e, k); } void Print(int *a, int n) { for (int i=0; i<n; i++) printf("%d ", a[i]); printf("\n"); } void reverse(int *a, int b, int e) { while (b < e) { swap(a, b, e); b++; e--; } } int Next(int *a, int n) { int i; for (i=n-1; i>0; i--) { if (a[i]>a[i-1]) { //在后面的数中寻找大于a[i-1]并且是最小的数 int k1= find(a, i, n-1, a[i-1]); swap(a, i-1, k1); reverse(a, i, n-1); return 1; } } return 0; } int mp[6] = { 1, 1, 2, 6, 24, 120 }; int main() { int m, n, k; int i; scanf("%d", &m); while (m--) { scanf("%d %d", &n, &k); int *a = (int *)malloc(n*sizeof(int)); i=0; while (i<n) { scanf("%d", &a[i++]); } if (n<5 && k > mp ) k %= mp ; while (k--) { if (!Next(a, n)) reverse(a, 0, n-1); } Print(a, n); free(a); } return 0; }
#include <stdio.h> #include <algorithm> using namespace std; int main() { int a[1024]; int m, n, k; int i; scanf("%d", &m); while (m--) { scanf("%d %d", &n, &k); i=0; while (i<n) { scanf("%d", &a[i++]); } while (k--) { if (!next_permutation(a, a+n)) sort(a, a+n); } for (i=0; i<n; i++) { printf("%d ", a[i]); } printf("\n"); } return 0; }
相关文章推荐
- pku acm 1833 排列
- 初学ACM - 组合数学基础题目PKU 1833
- Pku acm 2250 Compromise 动态规划题目解题报告(六)
- Pku acm 3041 Asteroids 数据结构题目解题报告(十六)---- 匈牙利算法求二分图的最大匹配
- ACM基本算法分类、推荐学习资料和配套pku习题
- PKU_ACM_1164_The Castle
- PKU ACM 1007题“DNA Sorting”的一种解法
- PKUACM_HUMAN GENE FUNCTION
- PKU ACM 1080-human gene function
- pku acm 1042 Gone Fishing
- http://acm.pku.edu.cn/JudgeOnline/problem?id=2409 polya或者burnside
- acm pku 1222 Extended lights out的算法分析
- POJ 1003求Hangover解题报告——【PKU ACM】
- pku1727 Advanced Causal Measurements (ACM) .
- PKU 1833 排列
- PKU ACM 1006 生理周期
- PKU ACM 1016 Numbers That Count
- [ACM]pku1002
- Pku acm 1080 Humman Gene Function 动态规划题目解题报告(八)
- Pku acm 1002 487-3279 排序算法解题报告(一) ----二叉查找数(BST)