海盜分金問題C++代碼
海盜分金問題.cpp :
#include "stdafx.h"
#include<iostream>
using namespace std;
#include<vector>
#include<algorithm>
struct record{
int i;
int value;
record(int ii,int v):i(ii),value(v){
}
};
int findSmallInVector(vector<record>&mm,int n){
int min=0;
for(int i=0;i<n;i++){
if(mm[i].value<mm[min].value){
min=i;
}
}
return min;
};
int findmaster(int a[],int n){
int min=0;
for(int i=0;i<n;i++){
if(a[i]<a[min]){
min=i;
}
}
return min;
};
void pirateShareGold(int a[],int n){
if(n==1||n==2)
{
return;
}
else if(n==3){
}
else{
for(int i=2;i<n;i++){
int count=0;
vector<record> mm;
for(int m=0;m<i-1;m++)
{
mm.push_back(record(m,a[m]));
}
while(count<i/2.00){
int x=findSmallInVector(mm,i-count-1);
a[mm[x].i]+=1;
mm.erase(mm.begin()+x);
count++;
}//while
int yy=0;
if(i==n-1){
for(auto ib=mm.begin();ib!=mm.end();ib++,yy++){
a[mm[yy].i]=0;
}
}
}//for
}
};
struct xxy{
void operator()(int& a){
a=0;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
int num;
cin>>num;
int*a=new int[num];
for_each(a,a+num,xxy());
pirateShareGold(a,num);
a[num-1]=100;
for(int i=0;i<num-1;i++)
{
a[num-1]-=a[i];
}
for(int i=0;i<num;i++){
cout<<a[i]<<ends;
}
system("pause");
return 0;
}
本文由用戶 xxy220543 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!