/*************************************
Copyright(C) 2004-2005 vision,math,NJU.
File Name: guess_card.cpp
Author: vision Version: 1.0 Data: 23-2-2004
Description: 给你9张牌,然后让你在心中记住那张牌,然后电脑分组让你猜你记住的牌在第几组,
然后猜出你记住的那张牌.
Other: 出自儿童时的一个小魔术
History:修改历史
**************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <assert.h>
#define CARDSIZE 52 /*牌的总张数*/
#define SUITSIZE 13 /*一色牌的张数*/
/*扑克牌结构*/
typedef struct Card
{
char val;/*扑克牌面上的大小*/
int kind :4; /*扑克牌的花色*/
}Card;
/*************************************************
Function: // riffle
Description: // 洗牌,然后随机的得到9张牌,要求九张牌不能有重复.
Calls: //
Called By: // main()
Table Accessed: //被修改的表(此项仅对于牵扯到数据库操作的程序)
Table Updated: // 被修改的表(此项仅对于牵扯到数据库操作的程序)
Input: //Card card[] 牌结构, int size 结构数组的大小
Output: //
Return: // void
Others: // 此函数修改card[]的值,希望得到九张随机牌
Bug: //此函数有bug,有时会产生两个相同的牌,有待修订
*************************************************/
void riffle(Card *cards, int size);
/*************************************************
Function: // show
Description: // 显示数组的内容
Calls: //
Called By: // main()
Table Accessed: //被修改的表(此项仅对于牵扯到数据库操作的程序)
Table Updated: // 被修改的表(此项仅对于牵扯到数据库操作的程序)
Input: //Card *card 牌结构指针, int size 结构数组的大小
Output: //
Return: // void
Others: //
*************************************************/
void show(const Card *cards, int size);
/*************************************************
Function: // grouping
Description: //把9张牌分别放到3个数组中,每组3张,a.e分组
Calls: //
Called By: // main()
Table Accessed: //被修改的表(此项仅对于牵扯到数据库操作的程序)
Table Updated: // 被修改的表(此项仅对于牵扯到数据库操作的程序)
Input: //Card *card 牌结构指针, int size 结构数组的大小
Output: //
Return: // void
Others: // 此函数修改 *carr1,*carr2,* carr3的值
*************************************************/
void grouping(const Card *cards, Card *carr1, Card *carr2, Card *carr3);
/*************************************************
Function: // result_process
Description: //用递归计算,所选的牌
Calls: // rshift
Called By: // main()
Table Accessed: //被修改的表(此项仅对于牵扯到数据库操作的程序)
Table Updated: // 被修改的表(此项仅对于牵扯到数据库操作的程序)
Input: //Card *carr1, Card *carr2, Card *carr3
Output: //