就是个随机洗牌的过程,脊闹假设编号原始位置顺序是1~20顺序排列,你可以用巧迹随机数每次交换任意两个位置的编号,这样交换n次后,可以认为顺序已经是随机的,最后指定相邻两个位置配对。
#include<stdio.h>#include<stdlib.h>
#include<time.h>
#define N 20
#define M 500
void main() { int a[N],i,j,k,m,n
srand((unsigned int)time(NULL)) //设置随机数种子,保证每次运行不出现相同结果
for ( i=0i<Ni++ ) a[i]=i+1 //数组按顺序赋值编号
for ( i=0i<Mi++ ) { //洗牌M次
m=rand()%N n=m while ( n==m ) n=rand()%N //保证交换的位置不孝野并重合
k=a[m] a[m]=a[n] a[n]=k //交换编号
}
for ( i=0i<Ni+=2 ) printf("%d-%d\n",a[i],a[i+1]) //输出结果
}
陌陌群里随机礼物这么弄:1、进入陌陌群,点击左上角礼物图像。
2、点开礼物图像会显示礼物品枝仿类。顷闷
3、点击猛乎纤陌陌群下方礼物设置。
4、设置为随机礼物。
分类: 电脑/网络 >>程序设计 >>其他编程语言问题描述:
题目:父亲给两兄弟分配N个礼物礼物,礼物的价耐败值分别为N1,N2,N3……Nn,为了让两兄弟高兴,父亲决定让两人得到的礼物总价值差的绝对值最小,尽量让分配结果公平,请用动态规划算法为父亲写出礼物分配的算法。
解析:
#include<iostream>
using namespace std
int main()
{
cout <<"请输入n"<<endl
int n
cin>>n
int *pn=new int[n]输入礼物个数
float *pValue = new float[n]礼物价值
float *pValue1 = new float[n]第一个人的礼物价值
float *pValue2 = new float[n]第二个人的礼物价值
cout <昌亩锋<"输入价值" <<endl
for (int i = 0i <n i ++) 将所有的值存起来
{
cin >>pValue[i]
}
int row1 = 0
int row2 = 0
float fvalue1 = 0
float fvalue2 = 0
for (int j = 0j <n j ++)
{
if (fvalue1 <= fvalue2)
{
pValue1[row1] = pValue[j]
fvalue1 += pValue1[row1]
row1 ++
}
else
{
pValue2[row2] = pValue[j]
fvalue2 += pValue2[row2]
row2 ++
}
}
cout <<"第一个"<<fvalue1 <<endl
cout <<"第二个耐晌"<<fvalue2 <<endl
delete[] pn
delete[] pValue
delete[] pValue1
delete[] pValue2
pn = NULL
pValue = NULL
pValue1 = NULL
pValue2 = NULL
return 0
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)