由a-z、0-9组成的3位密码,列出并打印所有可能的密码组合

这是全排列的一个应用,常规方法有递归,暴力组合法,考虑到这道题目,字母26个,数字10个,如果用递归法,组成三位的密码,该方法可能会导致栈溢出(不知道分析的对不对?如有不对,还请看到的给出宝贵意见)。

所以直接暴力组合法吧。时间复杂度O(n^3);

暴力组合:思路就是用3个循环;分别组合第一第二三位;重复的不输出;

/* @FileName:FullPermutation.cpp : 定义控制台应用程序的入口点。
	@auther:mishidemudong
	@date:2015-5-20
*/

#include "stdafx.h"
#include<iostream>
#include<stdio.h>
int _tmain(int argc, _TCHAR* argv[])
{
	FILE *fout;
	fopen_s(&fout,"file.txt","w");
	char s[] = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'g', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
		'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
	int i=0 , j = 0, k = 0;
	for (i = 0; i < 36; i++)
	{
		for (j = 0; j < 36; j++)
		{
			for (k = 0; k < 36; k++)
			{
				if (k!=i&&j!=i&&k!=j)
					fprintf(fout, "%c%c%c\n", s[i], s[j], s[k]);					
					//printf("%c%c%c\n", s[i], s[j], s[k]);
			}
		}
	}
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值