随机化数组和约瑟夫环-成都创新互联网站建设

关于创新互联

多方位宣传企业产品与服务 突出企业形象

公司简介 公司的服务 荣誉资质 新闻动态 联系我们

随机化数组和约瑟夫环

1、随机化数组问题

10余年的登封网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。全网整合营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整登封建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联公司从事“登封网站设计”,“登封网站推广”以来,每个客户项目都认真落实执行。

    就是对已有的数组进行乱序排列,使之随机的,毫无规律;

(1)、代码实现

#include
#include
#include

void showArray(int *a, int count);
void random_1(int *a, int count);
void random_1(int *a, int count){
    int i;
    int tmp;
    int index;

    srand(time(NULL));
    for(i = count; i > 0; i--){
        index = rand()%i;
        tmp = a[index];
        a[index] = a[i-1];
        a[i-1] = tmp;
    }

}
void showArray(int *a, int count){
    int i;

    for(i = 0; i < count; i++){
        printf("%d ", a[i]);
    }
    printf("\n");
}


int main(void){
    int a[] = {4, 6, 8, 2, 0, 7, 1,};
    int count = sizeof(a)/sizeof(int);

    showArray(a, count);
    random_1(a, count);
    showArray(a, count);

    return 0;
}

(2)、结果截图

随机化数组和约瑟夫环

2、约瑟夫环问题

    M个元素,第N个元素出圈,从第start开始数即可;

(1)、代码实现

#include
#include

void yusf(char **str, int count, int doom, int start){
    int *person;
    int i;
    int pre = start-2;
    int cur = start-1;
    int alive = count;
    int doomNumber = 0;

    if(start == 1){
        pre = count-1;
    }

    person = (int *)malloc(sizeof(int) * count);
    for(i = 0; i < count; i++){
        person[i] = (i+1)%count;  //循环数组
    }

    for(; alive > 0; cur = person[cur]){
        if(++doomNumber >= doom){
            printf("%s->出圈\n", str[cur]);
            alive--;
            doomNumber = 0;
            person[pre] = person[cur]; //出圈时的pre的保存
        }else{
            pre = cur;
        }
    }
}

int main(void){
    char *str[] = {"李大", "马二", "张三", "李四", "王五", "刘六", "吊七", "朱八", "杨九"};
    int count = sizeof(str)/sizeof(char *);
    int doom;  //恶运数字
    int start;  //从第几个人开始

    scanf("%d%d", &doom, &start);
    if(doom > count || doom <= 0 || start > count|| start <= 0){
        return;
    }

    yusf(str, count, doom, start); //count个元素,doom个厄运数字,从第start开始;

    return 0;
}

(2)、结果截图

随机化数组和约瑟夫环


网站题目:随机化数组和约瑟夫环
地址分享:http://kswsj.cn/article/jsidsh.html

其他资讯