暴力破解题

题目描述

旅行箱上的密码锁通常都只有 3 位数字,如果忘了密码,只要有足够的耐心,哪怕用逐一枚举的办法,也可以暴力破解。如果还能隐约记得数字的范围,则可以大大降低破解的工作量。

本题就请你根据用户记忆中的数字范围,列出所有可能的密码。

输入格式:

输入第一行给出一个正整数 n(≤8),随后一行列出 n 个 0 - 9 范围内的数字,是用户记忆中可能属于密码的数字。题目保证 n 个数字没有重复,数字间以空格分隔。

输出格式:

按照密码组成的 3 位数从小到大的顺序,输出这 n 个数字能组成的所有可能的 3 位数密码。要求每行输出 10 个,同行数字以 1 个空格分隔,行首尾不得有多余空格。注意:如果有前导零,也不可忽略。

输入样例:

3
5 2 8

输出样例:

222 225 228 252 255 258 282 285 288 522
525 528 552 555 558 582 585 588 822 825
828 852 855 858 882 885 888

代码:

#include <iostream>
#include <cstdio>
#include <set>
#include <algorithm>

using namespace std;


int main() {
    int n , num[10];
    scanf("%d",&n);
    for(int i = 0 ; i < n ; ++i) {
        scanf("%d" , &num[i]);
    }
    sort(num,num+n);
    int cnt=0;
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            for(int k=0;k<n;k++){
                cnt++;
                cout<<num[i]<<num[j]<<num[k]<<" \n"[cnt % 10 == 0 || (i == n- 1 && j == n - 1 && k == n-1)];      //换行条件在cnt%10值为0时和ijk遍历到最后一个值时
                
            }
        }
    }
    
}
    

思路:

暴力解法,直接输出!!!!!!!!!!!!!!!!!!!!!!!!!!


版权声明:本文为weixin_56761388原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。