33,008
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
#include <ctime>
#include <assert.h>
using namespace std;
const int Array_Len=9;
int generateInt(int* src, int pre_num,int num);
bool IsSelected(const int *p,int num,int n);
void SelectTheNum(int *p,int num);
int generateInt(int* src, int pre_num,int num)
{
int index = rand()%num;
bool bSelected=false;
while(!bSelected)
{
if(!IsSelected(src,index,num) && (abs(src[index] - pre_num) >= 2))
{
SelectTheNum(src,index);
bSelected=true;
}
else
index = rand()%num;
}
return index;
}
bool IsSelected(const int *p,int num,int n)
{
assert(p);
if(-1 == p[num])
return true;
return false;
}
void SelectTheNum(int *p,int num)
{
assert(p);
p[num]=-1;
}
void PrineResult(const int *p,int n)
{
assert(p);
for(int i=0; i < n; ++i)
{
cout<<p[i]<<" ";
}
cout<<endl;
}
int main()
{
int a[] = {0, 1, 2, 3, 4, 5, 6, 7, 8};
int result[Array_Len]={0};
srand((unsigned int)time(NULL));
int pre_num = a[rand()%Array_Len];
for(int i = 0; i < Array_Len; ++i){
result[i] = generateInt(a, pre_num,Array_Len);
pre_num = result[i];
}
PrineResult(result,Array_Len);
return 0;
}
#include <iostream>
#include <ctime>
#include <vector>
#include <algorithm>
#include <iterator>
using namespace std;
int generateInt(vector<int>& src, int pre_num){
int len = src.size();
if(len < 0){
return -1;
}
while(true){
int index = rand()%len;
if(abs(src[index] - pre_num) >= 2){
return src[index];
}
}
}
int main(){
int a[] = {0, 2, 3, 4, 5, 6, 7, 8};
int len = sizeof(a)/sizeof(int);
vector<int> src(a, a+len);
int num;
cout<<"please input how many nums do you want:";
cin>>num;
if(num <= 0){
return -1;
}
srand((unsigned int)time(NULL));
int pre_num = src[rand()%len];
vector<int> result(num);
for(int i = 0; i < num; ++i){
result[i] = generateInt(src, pre_num);
pre_num = result[i];
}
//print the result
copy(result.begin(), result.end(), ostream_iterator<int>(cout, ","));
return 0;
}