約瑟夫環(huán)問題(數(shù)組法)c語言實現(xiàn)
有N個編號為1~N的人圍成一圈,現(xiàn)在每隔兩個人(比如:1、4 之間隔了2、3)就將一個人淘汰出去,問最后剩下的是編號為幾的人?
算法代碼如下
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int people_count = 0;
int *peoples = NULL;
printf("please input people number: ");
scanf("%d", &people_count);
if (people_count < 2){
printf("can't do Joseph\n");
}
peoples = (int *)calloc(people_count, sizeof(int));
int i;
for(i = 0; i < people_count; i++){
peoples[i] = i+1;
}
i = 0;
int j = 0;
int rest = people_count;
while(rest){
if (i >= people_count){
i %= people_count;
}
if (peoples[i] == 0){
i++;
continue;
}
if (j++ % 3 ==0 && rest > 1){
printf("kill people NO. %d\n", peoples[i]);
peoples[i] = 0;
rest--;
}else if (rest==1){
printf("NO. %d is alive\n", peoples[i]);
rest--;
}
i++;
}
system("pause");
return 0;
}
相關(guān)文章
C語言循環(huán)結(jié)構(gòu)與時間函數(shù)用法實例教程
這篇文章主要介紹了C語言循環(huán)結(jié)構(gòu)與時間函數(shù)用法,是C語言中非常重要的一個技巧,需要的朋友可以參考下2014-08-08
基于C語言實現(xiàn)學(xué)生成績管理系統(tǒng)
這篇文章主要介紹了基于C語言實現(xiàn)學(xué)生成績管理系統(tǒng),具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-01-01
C++ 中l(wèi)ambda表達(dá)式的編譯器實現(xiàn)原理
C++ 11加入了一個非常重要的特性——Lambda表達(dá)式。這篇文章主要介紹了C++ 中l(wèi)ambda表達(dá)式的編譯器實現(xiàn)原理,需要的朋友可以參考下2017-02-02
C++繼承中的對象構(gòu)造與析構(gòu)和賦值重載詳解
這篇文章主要為大家詳細(xì)介紹了C++繼承中的對象構(gòu)造與析構(gòu)和賦值重載,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-03-03
C++?OpenCV實戰(zhàn)之零部件的自動光學(xué)檢測
這篇文章主要為大家介紹一個C++?OpenCV的實戰(zhàn)——零部件的自動光學(xué)檢測,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-09-09

