// test.cpp : Defines the entry point for the console application.
//#include "stdafx.h"
#include <vector>
using namespace std;bool isIn(int value,const vector<int>& vec)
{
for (int i=0; i<vec.size(); i++)
{
if(value == vec[i])
return true;
}
return false;
}void printdata(const vector<int>& vec)
{
for (int i=0; i<vec.size(); i++)
{
if (i!=0)
{
printf(",");
}
printf("%d",vec[i]); }
printf("\n");
}
void getall(int m,int n,const vector<int>& data,int* ptotalnum)
{
if (data.size() == n)
{
(*ptotalnum) ++ ;
printdata(data);
return;
} vector<int> tmp;
for (int i=0; i<m; i++)
{
if (isIn(i,data) )
{
continue;
}
else
{
tmp = data;
tmp.push_back(i);
getall(m,n,tmp,ptotalnum);
}
}
}int main(int argc, char* argv[])
{
vector<int> data;
int totalnum = 0;
getall(33,6,data,&totalnum);
printf("totoalnum:
//#include "stdafx.h"
#include <vector>
using namespace std;bool isIn(int value,const vector<int>& vec)
{
for (int i=0; i<vec.size(); i++)
{
if(value == vec[i])
return true;
}
return false;
}void printdata(const vector<int>& vec)
{
for (int i=0; i<vec.size(); i++)
{
if (i!=0)
{
printf(",");
}
printf("%d",vec[i]); }
printf("\n");
}
void getall(int m,int n,const vector<int>& data,int* ptotalnum)
{
if (data.size() == n)
{
(*ptotalnum) ++ ;
printdata(data);
return;
} vector<int> tmp;
for (int i=0; i<m; i++)
{
if (isIn(i,data) )
{
continue;
}
else
{
tmp = data;
tmp.push_back(i);
getall(m,n,tmp,ptotalnum);
}
}
}int main(int argc, char* argv[])
{
vector<int> data;
int totalnum = 0;
getall(33,6,data,&totalnum);
printf("totoalnum:
//#include "stdafx.h"
#include <vector>
using namespace std;bool isIn(int value,const vector<int>& vec)
{
for (int i=0; i<vec.size(); i++)
{
if(value == vec[i])
return true;
}
return false;
}void printdata(const vector<int>& vec)
{
for (int i=0; i<vec.size(); i++)
{
if (i!=0)
{
printf(",");
}
printf("%d",vec[i]); }
printf("\n");
}
void getall(int m,int n,const vector<int>& data,int* ptotalnum)
{
if (data.size() == n)
{
(*ptotalnum) ++ ;
printdata(data);
return;
} vector<int> tmp;
for (int i=0; i<m; i++)
{
if (isIn(i,data) )
{
continue;
}
else
{
tmp = data;
tmp.push_back(i);
getall(m,n,tmp,ptotalnum);
}
}
}int main(int argc, char* argv[])
{
vector<int> data;
int totalnum = 0;
getall(33,6,data,&totalnum);
printf("totoalnum:
#include <stdio.h>
#include <time.h>//随机数产生类
class clRandom
{
protected:
int mRange; //随机数的值域
int mIndex; //取出索引
int *mTable; //随机数表
bool mAutoGenerate; //是否自动产生随机数public:
//构建函数
clRandom(unsigned int Range, bool AutoGen = false) : mRange(Range),
mTable(NULL),
mIndex(0),
mAutoGenerate(AutoGen)
{
srand((unsigned)time(NULL)); //使用时间产生随机数字
mRange = Range;
mTable = new int [mRange];
Generate(); //产生随机数
} //析构函数
virtual ~clRandom()
{
if (mTable != NULL)
{
delete [] mTable;
mTable = NULL;
}
mRange = 0;
} //取出随机数
int GetNumber(void)
{
int Number = -1; if (mRange > 0)
{
Number = mTable[mIndex]; //取出随机数
++mIndex; //偏移取出随机数的指针
if (mIndex >= mRange)
{
mIndex = 0;
if (mAutoGenerate) //是否重新产生随机数
{
Generate(); //产生随机数
}
}
} return Number;
} //随机数重整
void Generate(void)
{
int loop, Offset;
//建立连续数字
for (loop = 0; loop < mRange; loop++)
{
mTable[loop] = loop;
}
//依照随机数改变数字的位置
for (loop = 0; loop < mRange; loop++)
{
int Temp;
//使用随机数选择要变换的数字
Offset = (rand() % mRange) + loop;
if (Offset >= mRange)
{
Offset -= mRange;
} //将数字对调
Temp = mTable[loop];
mTable[loop] = mTable[Offset];
mTable[Offset] = Temp;
} mIndex = 0;
}
};int main(int argc, int argv[])
{
clRandom *RandMaker;
int loop, Range = 33; RandMaker = new clRandom(Range); for (loop = 0; loop < 6; loop++)
{
printf(" %d", RandMaker->GetNumber()+1);
} printf("\n");
return 0;
}
{
int l_iForResult=1;
for(int i=Mseed;i>=Mseed-Nseed+1;i--)
{
l_iForResult*=i;
}
return l_iForResult;
}
int main()
{
int l_iResult=0;
l_iResult=ForSelect(33,6)/ForSelect(6,6);
cout << l_iResult<< endl;
return 0;
}
1.在1~33随机取数,得a1;
2.在{1~33}但排除a1的集合内随机取数a2;
3.类似上面,在缩减空间中随机取数,总循环次数<6.
http://topic.csdn.net/t/20050720/20/4157548.html