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

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

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

2020-05-23 13:46:15
字體:
來源:轉載
供稿:網友

這里所謂的“全密碼”指的是指定字符串中所有可能出現的密碼。以字符串“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位呢,所以是基本沒什么用的,效率太低了。希望下一步能用多個線程實現,速度再快一些。

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 县级市| 宁明县| 湘西| 蕲春县| 皋兰县| 陇川县| 贵南县| 东港市| 元阳县| 息烽县| 博乐市| 新郑市| 平陆县| 十堰市| 宾川县| 彩票| 肥乡县| 淳化县| 碌曲县| 波密县| 北流市| 阿图什市| 宿州市| 铁岭县| 宜兰县| 仁化县| 通化县| 茌平县| 深水埗区| 黄浦区| 长治市| 贺州市| 彭山县| 南开区| 兴和县| 七台河市| 绥棱县| 西乡县| 长宁县| 锦屏县| 襄汾县|