2013-02-25 3 views
0
#include<iostream> 
#include<vector> 
#include<algorithm> 

using namespace std; 
int main() 
{ 
    std::vector<int> v; 
    long int a1[1000000]; 
    string a[1000000]; 
    for (int i=0; i<100; i++) 
     a[i]=" "; 
    int n; 
    cout << "enter the value of n"; 
    cin >> n; 
    for (int i=0; i<n; i++) 
    { 
     cin >> a1[i]; 
     v.push_back(a1[i]); 
    } 
    sort(v.begin(), v.end()); 
    char ch[100]; 
    int i=0; 
    do { 
     for(int j=0; j<n; j++) 
     { 
      ch[j] = v[j] + '0'; 
      // cout<<ch[j]; 
     } 
     int j=3; 
     int k=0; 
     for(int l=0; l<n; l++) 
     { 
      a[i] = a[i] + ch[l]; 
     } 
     cout << a[i] << endl; 
     i++; 
    } 
    while (std::next_permutation(v.begin(), v.end())); 
    cout << endl << i; 
} 

문자열 배열에 모든 순열을 저장하고 싶지만 저장할 수 없습니다.> 8 (40320) 예 9! 앞으로 선언 할 경우 문자열 [1000000] dev C++에서 오류가 표시 될 수 있습니다. 어떻게 문자열 배열을 speifically 저장하는 방법을 설명 할 수 있습니다. (이 문자열 코드를 쉽게 다른 코드에 넣기를 원함) 9보다 큼 ! 또는 개까지 15!문자열 배열에 더 많은 수의 문자열을 저장하는 방법

+0

컨테이너에 '15!'문자열을 저장하고 싶습니까? 얼마나 큰 지 그리고 얼마나 많은 저장 공간이 필요한지 알고 계십니까? – Blastfurnace

+0

컨테이너를 사용하는 @Blastfurnace는 대용량의 메모리를 필요로 할 수 있습니다. 나는 spoj를 수행하는 데 원하는대로 10^15까지 저장할 수 있습니다. –

+0

진지하게 계산기를 가져 와서 1.3tillion 이상의 std :: string 객체와 그 내용. spoj 문제에 대해이 작업을 수행하는 경우 무의미하게 비현실적인 brute-force 솔루션을 시도하고있을 것입니다. – Blastfurnace

답변

4

스택 오버플로.

스택이 너무 많은 수의 요소에는 너무 적습니다. 힙 (operator new 사용)을 사용해야합니다. 또는 std::vector을 사용하십시오.

예를 들어, long int에 대한 동일

std::vector<std::string> a(1000000); 

string a[1000000]; 

을 대체 할 수 있습니다.

+0

나는 힙이 15에 충분할 것이라고 생각하지 않는다! – Daniel

+0

@meh 컨테이너를 사용하면 대용량 메모리가 필요할 수 있습니다. 10 개까지의 15 개의 저장 장치가 필요합니다. –

+0

@ user1670364 - 몇 가지 조사를해야합니다. 이것에 대한 다양한 기술이 있습니다. 또한, 그것은 당신이 무엇을하려고하는지에 달려 있습니다. 그것은 복잡한 작업입니다. –

0

정기적으로 파일을 플러시합니다. 필요한 일부를 메모리에 캐시합니다.

관련 문제