有n个字符串    再有几个不同的字符串a,b,c.. 怎么随机的把a,b,c 放在n个字符串中并替换A[n]所在的位置

解决方案 »

  1.   

    你的意思应该是“一个字符串,含有n个字符,再有几个不同的字符a,b,c.. 怎么随机的把a,b,c 放在字符串中并替换str[n]所在的位置”,不知我理解是不是有问题?罪过.
      

  2.   

    先创建一个数组
    int indexer[n];
    并初始化值为0~n-1
    然后对数组随机排序(排序的大小比较换用伪随机器生成的结果,以随机返回的结果排序),然后取前x个,把你的a,b,c,d依次填入A[indexer[i]]的位置即可。
      

  3.   

    比如说   aaa bbb ccc ddd eee fff      
    有2个字符串  zzz yyy aaa bbb zzz ddd yyy fff   随机后是这个样子  当然还有很多种情况
      

  4.   

    如果要生成随机全排列的话,用STL的random_shuffle会更方便。
      

  5.   

    创建n个随机数,然后按照字符数组中的顺序,随机替换,就OK了!
      

  6.   

    楼主,你的a、b、c、d...这些字符串的数量一定小于等于n吗?
      

  7.   


    int main()
    {
    char* szOrcString[6]   = {"aaa", "bbb", "ccc", "ddd", "eee", "fff"};
    char* szRepString[2]   = {"zzz", "yyy"};
    int nIndex[2] = {0};
    srand((unsigned)time(0));
    nIndex[0] = rand() % 7;
    nIndex[1] = rand() % 6;
    while( nIndex[0] == nIndex[1] )
    {
    nIndex[1] = rand() % 7;
    } int nRepIndex = rand() % 2;
    szOrcString[nIndex[0]] = szRepString[nRepIndex];
    szOrcString[nIndex[1]] = szRepString[nRepIndex]; for( int i = 0 ; i < 6 ; i++ )
    printf("%s ", *(szOrcString + i) ); system("pause");
    }
      

  8.   

    我给出了一个通用一点的,可以处理用于替换的字符串数目大于2,或者大于待替换的字符串数目的情况:
    #include <algorithm>
    #include <ctime>
    #include <iostream>
    #include <string>
    #include <vector>using namespace std;#define M 2
    #define N 6#define MIN(a, b)  ((a) <= (b) ? (a) : (b))int
    main()
    {
        srand(time(0));    vector<int> replaceIdc;
        for (int i = 0; i < N; ++i) {
            replaceIdc.push_back(i);
        }
        random_shuffle(replaceIdc.begin(), replaceIdc.end());    string strs[N] = {"aaa", "bbb", "ccc", "ddd", "eee", "fff"};
        string replaceStrs[M] = { "zzz", "yyy" };
        for (int i = 0; i < MIN(M, N); ++i) {
            strs[replaceIdc[i]] = replaceStrs[i];
        }    for (int i = 0; i < N; ++i) {
            cout << strs[i] << endl;
        }    return 0;
    }
    PS:我觉得这个问题是不是应该发在算法版?