首页 > 代码库 > 剑指offer系列源码-字符串的排列
剑指offer系列源码-字符串的排列
题目1369:字符串的排列 时间限制:1 秒内存限制:32 兆特殊判题:否提交:2432解决:609 题目描述: 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 输入: 每个测试案例包括1行。 输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。 输出: 对应每组数据,按字典序输出所有排列。 样例输入: abc BCA 样例输出: abc acb bac bca cab cba ABC ACB BAC BCA CAB CBA
#include <stdio.h> #include <stdlib.h> #include <string.h> void bubbleSort(char *arr,int begin,int length); void swap(char *a,char *b); void Permulation(char *arr,int k,int length); int main(){ char arr[10]; int length; int i; while(gets(arr)){ length = strlen(arr); bubbleSort(arr,0,length); Permulation(arr,0,length); } return 0; } void Permulation(char *arr,int k,int length){ int i; if(k == length){ for(i=0;i<length;i++) printf("%c",arr[i]); printf("\n"); }else{ for(i=k;i<length;i++){ if(k != i && arr[k] == arr[i]) continue; swap(&arr[k],&arr[i]); bubbleSort(arr,k+1,length); Permulation(arr,k+1,length); bubbleSort(arr,k+1,length); } } } void swap(char *a,char *b){ char c; c = *b; *b = *a; *a = c; } //冒泡排序 void bubbleSort(char *arr,int begin,int length){ int i,j; for(i=begin;i<length;i++){ for(j=i+1;j<length;j++){ if(arr[i]>arr[j]){ swap(&arr[i],&arr[j]); } } } }
剑指offer系列源码-字符串的排列
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。