NOJ 1324 穷举所有排列
来源:互联网 发布:英语单词跟读软件 编辑:程序博客网 时间:2024/05/29 19:08
2016.10.19
【题目描述】
穷举所有排列
时限:100ms 内存限制:10000K 总时限:300ms
描述:
输入一个小于10的正整数n,按把每个元素都交换到最前面一次的方法,输出前n个小写字母的所有排列。
输入:
输入一个小于10的正整数n。
输出:
按把每个元素都交换到最前面一次的方法,输出前n个小写字母的所有排列。
输入样例:
3
输出样例:
abcacbbacbcacbacab
【解题思路】
使用回溯的思想,生成n个数的所有排列。
当程序执行到第k层时,默认前面的序列已经排好,接下来k与后面的数(包括自己)依次交换位置,进行下一层,结束后恢复状态。
【代码实现】
# include <stdio.h>int n;char a[15] = {0,'a','b','c','d','e','f','g','h','i','j','k','l'};void search(int );void swap(int ,int );void output();int main(void){ int i; scanf("%d", &n); search(1); return 0;}void search(int k){ int i; if (k == n + 1) output(); else { for (i = k; i <= n; ++i) { swap(i, k); search(k + 1); swap(i, k); } }}void swap(int x, int y){ int t; t = a[x]; a[x] = a[y]; a[y] = t;}void output(){ int i; for (i = 1; i <= n; ++i) printf("%c", a[i]); printf("\n");}
【心得体会】
进一步体会回溯算法
0 0
- NOJ 1324 穷举所有排列
- NWPU-NOJ-穷举所有排列
- 回溯法——穷举所有排列
- 全排列 NOJ 1103
- 排列(暴力穷举)
- 穷举之排列
- NWPU-NOJ-穷举n位二进制数
- NOJ 1323 穷举n位二进制数
- 穷举所有的双色球
- 穷举所有可能
- C++——算24(一种简单的穷举4个元素的所有排列的方法)
- 算法练习-NOJ-1323-穷举n位二进制数
- noj算法题——穷举n位二进制数
- 穷举所有子集的算法
- NOJ 1429 全排列的输出
- 全排列:穷举法和递归法
- GetLogicalDrives|GetLogicalDriveStrings|GetDriveType-穷举系统所有驱动器
- Noj
- java基础学习之集合-List
- DirectCompute
- 请求重定向
- 冒泡排序
- 最接近原生APP体验的高性能前端框架
- NOJ 1324 穷举所有排列
- Android 学习---音频学习 :SoundPool 音频池 的使用
- 事务级别
- java装饰器模式与java.io包
- 目前看过的java里随机数方法
- Swift3.0 功能二 (表情键盘与图文混排)
- GoodBye My Teachers
- 位运算符练习
- 高观点下的高等数学(数学分析、线性代数)