#include <iostream.h>
void main()
{
int pw[3][3][3];
int a,b,c;
cin>>a>>b>>c;
int i,j,k;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
for(k=0;k<3;k++)
{
if(j==0)pw[i][j][k]=k;
if(j!=0) pw[i][j][k]=10*j+k;
if(i!=0) pw[i][j][k]=i*100+10*j+k;
int m,n,l;
m=(pw[i][j][k]%100)%10;
n=((pw[i][j][k]-m)/10)%10;
l=(pw[i][j][k]-10*n-m)/100;
////对m,n,l进行分析,用a去换0,b去换1,c去换2,换完后重新合成数字
switch(m)
{
case 0:
m=a;break;
case 1:
m=b;break;
case 2:
m=c;break;
}
switch(n)
{
case 0:
n=a;break;
case 1:
n=b;break;
case 2:
n=c;break;
}
switch(l)
{
case 0:
l=a;break;
case 1:
l=b;break;
case 2:
l=c;break;
}
pw[i][j][k]=l*100+n*10+m;
cout<<pw[i][j][k]<<endl;
}
}
}
} 简单说下如我看到的别人写的暴力破解密码代码不同之处在于,别人一般采用的是先确定一个位置上的数字,
挑出以后,扔掉后,这样位置就变少了直到为一个位子就结束,举个例子如3位密码,其随机组合有27种,按通常别人
写的是先确定一个位置的数字,枚举完后,剩两个,再挑一个,剩最后一个.我的思路是用0,1,2生成一系列的组合后,
再对数字进行分离,用想输入的任何数字,如a,b,c一一对应替换0,1,2,再重新合成数字.(帖子上有代码)