project euler problem 24

Lexicographic permutations

Problem 24

A permutation is an ordered arrangement of objects. For example, 3124 is one possible permutation of the digits 1, 2, 3 and 4. If all of the permutations are listed numerically or alphabetically, we call it lexicographic order. The lexicographic permutations of 0, 1 and 2 are:

012   021   102   120   201   210

What is the millionth lexicographic permutation of the digits 0, 1, 2, 3, 4, 5, 6, 7, 8 and 9?


Answer:
2783915460
Completed on Thu, 10 Oct 2013, 15:48

刚开始用了康托计算的,但是一直不对,郁闷死了,然后直接用了next_permutation,因为1000000,所以还担心时间超时呢,但是一运行就很快,直接就用这函数了哈哈……

#include <iostream>
#include <map>
#include <deque>
#include <queue> //包含优先队列
#include <stack>
#include <string>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <map>
#include <set>
using namespace std;
int main()
{
    int a[10]={0,1,2,3,4,5,6,7,8,9},k=1;
    while(k!=1000000) {next_permutation(a,a+10);k++;}
    for(int i=0;i<10;i++)
        cout<<a[i];
    cout<<endl;
    return 0;
}

你可能感兴趣的:(project euler problem 24)