注册 登录
编程论坛 VB6论坛

扑克洗牌调整顺序,算法怎么办?

jinanshui 发布于 2013-07-28 19:06, 535 次点击
1.给下列数据赋值c(1),c(2),c(3),c(4),c(5),c(6),c(7),c(8),c(9),c(10),c(11),c(12),c(13),好做
2.取随机数n=int(rand()*13)+1,例如n=6
3.调整后的顺序为c(1),c(2),c(3),c(4),c(5),c(7),c(8),c(9),c(10),c(11),c(12),c(13),c(6)
第6个数移到最后,c(7),c(8),c(9),c(10),c(11),c(12),c(13),各前移1个位置。
4.再取随机数n=int(rand()*12)+1,例如n=3
5.上面的顺序调整后的顺序为c(1),c(2),c(4),c(5),c(7),c(8),c(9),c(10),c(11),c(12),c(13),c(3),c(6)
第三个数移到倒数第2的位置,第4、5、6、、、11个数个向前移动一个位置。
6.再取随机数n=int(rand()*11)+1,例如n=5
7.再调整后的顺序为c(1),c(2),c(4),c(5),c(8),c(9),c(10),c(11),c(12),c(13),c(7),c(3),c(6)
8.、、、、、
9.、、
连续操作5次,怎么办?各位老师出手谢谢
2 回复
#2
Susake2013-07-28 20:12
程序代码:
#include <stdio.h>
#include <malloc.h>
#include <time.h>
int h;

typedef struct LNode
{
    int data;
    struct LNode *next;
}*LinkList;

void InitLinkList(LinkList &L)
{
    L = (LinkList)malloc(sizeof(LNode));
    L -> next = NULL;
}

void createLinkList(LinkList &L)
{
    LNode *p, *r = L;
    for(int i = 0; i < 13; i++)
    {
        p = (LNode *)malloc(sizeof(LNode));
        p -> data = i + 1;
        r -> next = p;
        r = p;
    }
    r -> next = NULL;
}

void insertLinkList(LinkList &L)
{
    LNode *r = L -> next, *p;
    while(r -> next) r = r -> next;
    p = (LNode *)malloc(sizeof(LNode));
    p -> data = h;
    r -> next = p;
    r = p;
    r -> next = NULL;
}

void deleteLinkList(LinkList &L, int m)
{
    LNode *p, *r = L;
    int i = 0;
    while(i < m)
    {
        i++;
        p = r;
        r = r -> next;
        h = r  -> data;
    }
    p -> next = r -> next;
}

void outputLinkList(LinkList L)
{
    LNode *p = L -> next;
    while(p)
    {
        printf("%d ", p -> data);
        p = p -> next;
    }
    puts("");
}

void destoryLinkList(LinkList &L)
{
    free(L);
    L -> next = NULL;
}

int main()
{
    int n = 5, m, t = 13;
    LinkList L;
    InitLinkList(L);
    createLinkList(L);
    while(n--)
    {
        srand(time(0));
        m = (rand() % t--) + 1;
        deleteLinkList(L, m);
        insertLinkList(L);
        outputLinkList(L);
    }
    destoryLinkList(L);
    return 0;
}
速结..睡觉去..!


[ 本帖最后由 Susake 于 2013-7-28 20:13 编辑 ]
#3
Susake2013-07-28 20:15
晕..原来不是c/c++版的...!,睡觉!
1