国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++全密碼生成的實現代碼

2020-01-26 13:53:01
字體:
來源:轉載
供稿:網友

這里所謂的“全密碼”指的是指定字符串中所有可能出現的密碼。以字符串“0123456789”為例,可能出現的2位密碼會有100個,即L^N個。(L代表字符串的長度,N代表要生成密碼的位數)。

第一種方法:遞歸。這個比較容易理解,每分解出一個字符,設成新串,然后靠到上一個串上即可。代碼如下:

void CpasswordCreateDlg::CreatePass1(CString inStr,int m,CString outStr){  if (m==0)  {    fp.SeekToEnd();    CString tStr=outStr+L"/n";    fp.WriteString(tStr);//fp為一個CStdioFile,全局變量    passFlag++;//生成了多少個密碼,以用于進度條,為ULONGLONG類型    int persent=int((float)passFlag/passScore*100);//passScore要生成密碼的總數量    if (persent%5==0)    {      m_progressCtrl.SetPos(persent);//m_progressCtrl是進度條    }  }  else  {    for (int i=0;i<inStr.GetLength();i++)    {      CreatePass1(inStr,m-1,outStr+inStr.Mid(i,1));    }  }}

第二種方法:循環的方式,不使用遞歸。代碼如下,現在如果讓我解釋代碼的意思,還真想不出來當時為什么這么設計,竟然無法理解自己當時為什么這么牛B,能想出下面的代碼。

void CpasswordCreateDlg::CreatePass2(CString inStr,int m){  fp.SeekToEnd();  int *flag=new int [m];//用一個整形指針取出字符串中某個位置的字符  for (int i=0;i<m;i++)  {    flag[i]=0;  }  int inStrLen=inStr.GetLength();  ULONGLONG passCount=(ULONGLONG)pow((double)inStrLen,m);  for (ULONGLONG i=0;i<passCount;i++)  {    for (int t=1;t<m;t++)    {      if (flag[m-t]>0&&flag[m-t]%inStrLen==0)//這個地方比較拗口,我也忘記當時是怎么出來的這種想法的。      {        flag[m-t-1]++;        flag[m-t]=0;      }    }    CString str=L"";    for (int j=0;j<m;j++)    {      str+=inStr.GetAt(flag[j]);    }    flag[m-1]++;    str+=L"/n";    fp.WriteString(str);    passFlag++;    int persent=int((float)passFlag/passScore*100);    if (persent%5==0)    {      m_progressCtrl.SetPos(persent);    }  }  delete [] flag;}

生成的速度不是很快,一秒鐘大約2萬多個吧,實際上是基本沒什么用的。例如:以這個速度要生成5位的全密碼,密碼個數為916132832,大約需要12個小時,如果6位呢,7位呢,所以是基本沒什么用的,效率太低了。希望下一步能用多個線程實現,速度再快一些。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 常宁市| 苍南县| 克山县| 长汀县| 镇原县| 寿光市| 临安市| 仙居县| 巨鹿县| 巨野县| 景东| 双鸭山市| 普兰店市| 宜良县| 遵义县| 宣化县| 铜梁县| 阿图什市| 凌云县| 九龙坡区| 扎囊县| 周口市| 林甸县| 新巴尔虎右旗| 时尚| 琼中| 霞浦县| 拉萨市| 富蕴县| 涡阳县| 浠水县| 天长市| 上高县| 金寨县| 乌拉特前旗| 安阳县| 乌兰察布市| 彰化县| 永州市| 五家渠市| 乌海市|