//*******************************************************************
//在許多情況下我們需要窮舉組合的算法,比如密碼詞典。
//這個算法的要害是密碼下標進位的問題。
//另外本例子中的寫文件語句效率比較低,為了降低算法復雜度沒有優化。
//假如要提高寫文件的效率,可以使用緩沖區,分批寫入。
//*********************************************breath.cnpick.com*****
void createpassWord()
{
#define passwordmax 8//將生成密碼的最大長度
char a[]="0123456789abcdefghijklmnopqrstuvwxyz";//可能的字符
long ndictcount=sizeof(a);//獲得密碼詞典長度
char cpass[passwordmax+2];//將生成的密碼
long nminl=1,nmaxl=3;//本例中密碼長度從1-3
long array[passwordmax];//密碼詞典下標
assert(nminl<=nmaxl && nmaxl<=passwordmax);//容錯保證
long nlength=nminl;
register long j,i=0;
bool bnext;
cstdiofile file;
file.open("c:dict.txt",cfile::modecreatecfile::modewrite);
while(nlength<=nmaxl)
{
for(i=0;i<passwordmax;i++)
array[i]=0;
bnext=true;
while(bnext)
{
for(i=0;i<nlength;i++)
cpass[i]=a[array[i>;
cpass[i]='