• 十二:全排列-求解密码


    问题:全排列-求解密码
    题目描述

    有某个系统需要密码才可以进入,现已知密码中的字符组合为字符串s中的字符(s<=6,s中的每一个字符都是英文字母,没有数字),但不知其排列顺序,请你编写程序,显示出该字符串中元素的所有组合(注意:会出现重复情况)
    如果您采用哈希函数来消除重复,请使用如下公式来计算哈希值:
      result = s[i] + (result << 6) + (result << 16) - result;
    result = result & 0x7fffffff;
    输入
    一个字符串
    输出
    该字符串的所有组合
    样例输入
    abcc
    样例输出

    abcc acbc accb bacc bcac bcca cabc cacb cbac cbca ccab ccba

     1 #include<stdio.h>
     2 #include<string.h>
     3 char str1[1000][10];
     4 int y=0;
     5 void fun(char str[],int k){
     6     int i,j;
     7     char t;
     8     if(k==strlen(str)){
     9         int a=y;
    10         int h=0;
    11         while(a--&&!strlen(str1[y]))
    12             if(!strcmp(str,str1[a])){
    13                 h++;
    14                 break;
    15         }
    16         if(!h)    
    17         printf("%s ",str);
    18         strcpy(str1[y++],str);
    19     }
    20     for(i=k;i<strlen(str);i++){
    21         t=str[i];
    22         for( j=i-1 ; j>=k ; j-- )     
    23               str[j+1]=str[j];     
    24         str[k]=t; 
    25         fun(str,k+1);
    26             t=str[k];
    27             for( j=k ; j<=i ; j++)     
    28                   str[j]=str[j+1];     
    29             str[i]=t;
    30     }
    31 }
    32 int main(){
    33     char str[7];
    34     scanf("%s",str);
    35     fun(str,0);
    36     return 0;
    37 }
  • 相关阅读:
    春季学期第十二周作业
    2019春第三次课程设计实验报告
    春季学期第十一周作业
    春季学期第十周作业
    春季学期第九周作业
    第五周总结 & 实验报告(三)
    第四周总结 & 实验报告(二)
    实验报告(一)&第三周总结
    第二周小结
    2019春总结
  • 原文地址:https://www.cnblogs.com/yuming226/p/8146425.html
Copyright © 2020-2023  润新知