首页 > 试题广场 >

有一副牌编号0~51,请把这副牌尽可能随机的发到4个人手里。

[问答题]
有一副牌编号0~51,请把这副牌尽可能随机的发到4个人手里

注1:已经有rand()函数可以调用,但是rand()函数开销较大,请尽量少调用
a,b,c,d分别是13个元素的1维数组
函数原型 void deal( int[] a, int[] b, int[] c, int[] d );
void deal(int a[], int b[], int c[], int d[])
{
	static unsigned int r=time(NULL);
	int cnt[4]={0};
	int *p[4]={a,b,c,d};
	for(int i=0;i<52;i++) { 
		int v=r%4; 
			while(cnt[v]==13) 
				v=(v+1)%4; 
			p[v][cnt[v]++]=i; 
			int t=time(NULL); 
			r=t+r*t; 
		} 
	} 
void main() { 
	int a[4][13]; 
	deal(a[0],a[1],a[2],a[3]); 
	for(int k=0;k<4;k++) { 
		for(int i=0;i<13;i++) 
			printf("%d ",a[k][i]); 
			printf("\n"); 
	}
}

发表于 2014-10-25 00:26:04 回复(0)