C/C++の宿題を片付けます 102代目
■ このスレッドは過去ログ倉庫に格納されています
0228デフォルトの名無しさん
2008/01/07(月) 21:11:39#include<stdio.h>
#include<stdlib.h>
typedef struct tag_group{
int num, rest[4*3];
}group_t;
group_t group[]={
{12,{12,12,12, 2, 2, 2,10,10,10, 7, 7, 7}},
{12,{ 4, 4, 4, 3, 3, 3, 1, 1, 1,11,11,11}},
{12,{ 9, 9, 9, 8, 8, 8, 6, 6, 6, 5, 5, 5}}
};
int main(void){
int i, j, wholenum=0, prev=-1, cur, group_num=3, idx;
for(i=0;i<group_num;i++) wholenum+=group[i].num;
while(wholenum){
if(prev<0) cur=rand()%group_num;
else cur=(prev+1+(rand()%(group_num-1)))%group_num;
for(j=0;j<group_num;j++) if(group[j].num*2>wholenum) cur=j;
if(group[cur].num<=0){
group[cur]=group[--group_num];
if(prev==cur) prev=-1;
if(prev==group_num) prev=cur;
continue;
}
idx=rand()%group[cur].num;
printf(" %2d", group[cur].rest[idx]);
group[cur].rest[idx]=group[cur].rest[--group[cur].num];
wholenum--;
prev=cur;
}
return 0;
}
■ このスレッドは過去ログ倉庫に格納されています