A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 八戒 中级黑马   /  2015-7-9 20:21  /  413 人查看  /  7 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

编程并打印出字符串的所有组合形式
以"abc"为例
"a""b""c"
"ab""ac""bc""cb""ca""ba"
"abc""acb""bca""bac""cab""cba"
这道题怎么做?求大神指点迷津.......

7 个回复

正序浏览
给你一种答案。。。
  1. public class Sort{
  2.         public void permutation(char[] buf, int start, int end) {  
  3.         if (start == end) {// 当只要求对数组中一个字母进行全排列时,只要就按该数组输出即可  
  4.             for (int i = 0; i <= end; i++) {  
  5.                 System.out.print(buf[i]);  
  6.             }  
  7.             System.out.println();  
  8.         } else {// 多个字母全排列  
  9.             for (int i = start; i <= end; i++) {  
  10.                 char temp = buf[start];// 交换数组第一个元素与后续的元素  
  11.                 buf[start] = buf[i];  
  12.                 buf[i] = temp;  
  13.   
  14.                 permutation(buf, start + 1, end);// 后续元素递归全排列  
  15.   
  16.                 temp = buf[start];// 将交换后的数组还原  
  17.                 buf[start] = buf[i];  
  18.                 buf[i] = temp;  
  19.             }  
  20.         }  
  21.     }  

  22.     public void testPermutation() throws Exception {  
  23.         char[] buf = new char[] { 'a', 'b', 'c' };  
  24.         permutation(buf, 0, 2);  
  25.     }  
  26. }  
复制代码
回复 使用道具 举报
不太清楚哦
回复 使用道具 举报
三重for就可以
回复 使用道具 举报
假设有n哥字母参与排序,第一排有n个字符 第二排有C(2,3)*A(2,2) 个字符串  第三排有A(3,3)个字符串,
回复 使用道具 举报
刚学循环,慢慢想下。。。
回复 使用道具 举报
是给定字符还是给定字符串?
回复 使用道具 举报
用三重For循环即可。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马