游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1872|回复: 7

关于数据结构的组织的问题,望高手不吝赐教

[复制链接]

64

主题

701

帖子

878

积分

高级会员

法师

Rank: 4

积分
878
QQ
发表于 2005-7-21 03:22:00 | 显示全部楼层 |阅读模式
想建这样一个库

目的是能够将选择题的4个答案每次出现的位置不一样,例子:

题目:"1+1="

某一次

A.1

B.2

C.3

D.4

另外一次

A.3

B.1

C.4

D.2

有没有好办法将这个实现?

谢谢!

42

主题

418

帖子

418

积分

中级会员

Rank: 3Rank: 3

积分
418
发表于 2005-7-21 09:24:00 | 显示全部楼层

Re:关于数据结构的组织的问题,望高手不吝赐教

比如这样

for (char c = 'A'; c <= 'D'; c++)
{
    int i = rand() % 4;

    while (0 != Answer)    ++i % 4;

    Answer = c;
}

64

主题

701

帖子

878

积分

高级会员

法师

Rank: 4

积分
878
QQ
 楼主| 发表于 2005-7-21 10:35:00 | 显示全部楼层

Re:关于数据结构的组织的问题,望高手不吝赐教

谢谢您的回复

42

主题

418

帖子

418

积分

中级会员

Rank: 3Rank: 3

积分
418
发表于 2005-7-21 17:42:00 | 显示全部楼层

Re:关于数据结构的组织的问题,望高手不吝赐教

嘿嘿,不客气^_^

6

主题

90

帖子

90

积分

注册会员

Rank: 2

积分
90
发表于 2005-7-22 12:11:00 | 显示全部楼层

Re:关于数据结构的组织的问题,望高手不吝赐教

这个方法有一个问题,就是在随机过程中可能会出现老是与前面答案冲突陷入长时间循环的问题,我建议先列出所有的排列组合,然后用再用随机数取出,
code below:
//4个答案组合算法
struct ACombination//一次排列组合的数据
{
char a[4];
}

std::deque<ACombiation> oCombinations;
//里面最后会有24个元素,因为4的排列组合是4!=24,随机时用oCombinations[rand()%24]即可

        int ii=0,jj=0,kk=0,ll=0;
        for(int i=0;i<4;i++)
        {
                for(int j=0;j<4;j++)
                {
                        if(j==i)
                        {
                                continue;
                        }
                        for(int k=0;k<4;k++)
                        {
                                if(k==j||k==i)
                                {
                                        continue;
                                }
                                for(int l=0;l<4;l++)
                                {
                                        if(l==k||l==j||l==i)
                                        {
                                                continue;
                                        }
                                        ACombination a;
                                       
                                        a.a[0]=i;
                                        a.a[1]=j;
                                        a.a[2]=k;
                                        a.a[3]=l;
                                        oCombinations[3].push_back(a);
                                        ll++;                                       
                                }                               
                                kk++;
                        }                       
                        jj++;
                }
                ii++;
                jj=0;
                kk=0;
                ll=0;
        }

64

主题

701

帖子

878

积分

高级会员

法师

Rank: 4

积分
878
QQ
 楼主| 发表于 2005-7-22 19:05:00 | 显示全部楼层

Re:关于数据结构的组织的问题,望高手不吝赐教

谢谢大家的回复!

3

主题

19

帖子

19

积分

新手上路

Rank: 1

积分
19
发表于 2005-7-22 23:51:00 | 显示全部楼层

Re:关于数据结构的组织的问题,望高手不吝赐教

void GetAnswer()
{
     int count = rand()%10;
     for (int i;i<count;i++) swap(answer[rand()%4],answer[rand()%4]);
}

这样可能也可以……

42

主题

418

帖子

418

积分

中级会员

Rank: 3Rank: 3

积分
418
发表于 2005-7-24 09:17:00 | 显示全部楼层

Re: Re:关于数据结构的组织的问题,望高手不吝赐教

sexhook: Re:关于数据结构的组织的问题,望高手不吝赐教

这个方法有一个问题,就是在随机过程中可能会出现老是与前面答案冲突陷入长时间循环的问题,我建议先列出所...

空间换时间。。。。
俺还是太嫩了呀
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-26 13:30

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表