随机化数组和约瑟夫环
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)、结果截图
网页名称:随机化数组和约瑟夫环
URL分享:http://scyanting.com/article/jsidsh.html