各位好,一个算法问题!!跪求,愿送100分……

werdcd 2003-09-21 11:02:55
我需要产生10万个全不相同的密码(两两之间至少要有两位不一样),太急了,各位帮我想想!!跪求啊……如果明天再没有,皮鞭,蜡烛……我晕,谢谢先……各位大虾,快啊……
...全文
92 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
ftp123 2003-11-13
  • 打赏
  • 举报
回复
对不起,上面我没有考虑清楚,忘记了一些东西.
我只是简单的选择了比如0到9的这样一些数,其实如果我们可以列一张表的话(表的第一列为0到9的数,10到19的为第二列,依次往下排),那么我们就可以看到连接这些数的是一条折线,也就是如果你有一张这样的表,那么你可以任意选择一个启点始,连接其他的行,这样可以得到一系列的折线,这些折线呢,就是我们想要的答案.
那么也就是说,我们的答案有很多,但是很可惜,我们仍然只可以选择其中的一个.至于道理,还是相同的.
好了,我也不知道能不能帮上你的忙了.
仍然希望大家指正批评.
ftp123 2003-11-13
  • 打赏
  • 举报
回复
这个题目真的很难,似乎是太难了点.很不好做.
现成的程序和函数好象都没有,那么我想就只剩下观察不同数的区别,总结归纳规律了.
首先看0到100内的数,看0到9的数,这10个数不一样,但是选择了这10个数,那么剩下的90个数就都不能选择了,因为什么呢?我们看看10到20的数,这样大家都明白为什么不能选了吧.
然后是100到1000的数,因为是以100为单位往上涨,所以我们可以任意选择一组数,但是只能选100个数,超过了就不行了.那么呢,我们到这里似乎看出一个规律了吧.
看到这里似乎这个题目很好做了耶.呵呵,不好意思,为我前面的话道歉.
然后就是记录的问题了.这个我想不难,只要有足够的内存和硬盘空间应该是足够了.
好了,就到此为止了.
不知道对不对,喜欢大家指正批评.
bluebohe 2003-09-22
  • 打赏
  • 举报
回复
HRESULT hr;
GUID g;
在自己的机器上就是很得心应手
CString str;
for(int i=0;i<100000;i++)
{
hr=::CoCreateGuid(&g);
str.Format("%u%u%u%u%u%u%u%u%u%u%u",g.Data1,g.Data2,g.Data3,g.Data4[0],
g.Data4[1],g.Data4[2],g.Data4[3],g.Data4[4],g.Data4[5],g.Data4[6],g.Data4[7]);
}
werdcd 2003-09-22
  • 打赏
  • 举报
回复
各位大虾,快啊!!江湖救急啊!!给我出点点子吧,求各位了……常跪不起!
bluebohe 2003-09-21
  • 打赏
  • 举报
回复
我在网吧,查不到MSDN,你再查一下这个贴子吧

http://expert.csdn.net/Expert/topic/1327/1327397.xml?temp=9.074038E-02
werdcd 2003-09-21
  • 打赏
  • 举报
回复
当然要记录……还要打印出来……
bluebohe 2003-09-21
  • 打赏
  • 举报
回复
那你如果不纪录已经产生的密码的话
似乎用GUID比较合适了
GUID是16进制的字符串,你再他在转化成10进制的字符串
HRESULT CoCreateGuid(
GUID *pguid //Pointer to the GUID on return
);
werdcd 2003-09-21
  • 打赏
  • 举报
回复
差点忘了,密码需要的只能是0到9的数字,再跪……
werdcd 2003-09-21
  • 打赏
  • 举报
回复
几率小也不行啊,我倒是无所谓。但是老板不同意……汗……跪求啊,大家可怜偶……
bluebohe 2003-09-21
  • 打赏
  • 举报
回复
找到现成的了,赫赫
回复人: he_zhidan(OO军团最高长官) ( ) 信誉:100 2003-02-18 10:59:00 得分:0


char str[100],str1[30]="abcedfh123456";
CTime t;
t=CTime::GetCurrentTime();
for(int i=0;i<99;i++)
str[i]=str1[(rand()+t.GetSecond())%13];
str[100]='\0';
MessageBox(str);


bluebohe 2003-09-21
  • 打赏
  • 举报
回复
楼上是转贴的(回复人: tonybaobao(Tony宝宝) ( ) 信誉:100 2003-9-6 22:47:46 得分:8 )
char str[1000];
for(i=0;i<100000;i++)
{
srand(time(0)*i);
sprintf(str,"%d",rand());
}
不能保证每个不一样,不过相同几率应该很小

bluebohe 2003-09-21
  • 打赏
  • 举报
回复
void main()
{
int tmp[8];
memset(tmp,'\0',8);
char* str;
str = new char [8];
srand(time(0));
for(int i=0;i<=7;i++)
{
tmp[i]=rand()%10;
itoa(tmp[i],str+i,10);
}
cout<<str;
getchar();
}

werdcd 2003-09-21
  • 打赏
  • 举报
回复
各位大虾,救命啊……泪流满面……

2,586

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 资源
社区管理员
  • 资源
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧