第一个编程题是随机产生【-20,20】之间的5个数,使得他们的和为0;
不知道直接随机对不对,运行的时候秒出结果,好像还可以先枚举出所有满足条件的情况,然后随机一个序号解决问题
#include<iostream>
#include <vector>
#include<algorithm>
#include <cstdlib>
#include <ctime>
using namespace std;
int myrand()
{
//srand(unsigned(rand()%100));
return (rand() % 41 - 20);
}
int res[5];
void getNum()//先产生四个,第五个即确定了
{
int tem[5];
int sum;
bool flag = true;
while(flag)
{
sum = 0;
for(int i = 0;i < 4;++i)
{
tem[i] = myrand() ;
sum += tem[i];
}
if(sum >= -20 && sum <= 20 )flag = false;
}
for(int i = 0;i < 4;++i)res[i] = tem[i];
res[4] = sum * -1;
}
void getNum1()//直接产生5个
{
bool flag = true;
int tem[5];
int sum;
while(flag)
{
sum = 0;
for(int i = 0;i < 5;++i)
{
tem[i] = myrand();
sum +=