題目:n人圍成乙個圈,順序排列。
從第乙個人開始報數,從一報到三,凡是報到三的人退出圈子,
問最後留下的是原來第幾號的那位。
<
// 20190421_circle_report_3_last_one_.c
/* 題目:n人圍成乙個圈,順序排列。
* 從第乙個人開始報數,從一報到三,凡是報到三的人退出圈子,
* 問最後留下的是原來第幾號的那位。
*/#include #include #include // 去除值為0的元素,重整陣列長度
int del_zero(int *p, int *source, int new_n, int *temp);
int main(int argc, char const *ar**)
if (n < 1)
int *p, *source;
source = (int *)malloc(n * sizeof(int));
if (source == null)
for (p = source; p < source + n; p++)
int new_n = n;
int *temp = (int *)malloc(n * sizeof(int));
if (temp == null)
int num = 1;
while (1)
} else if (new_n == 2) else
// 如果遍歷到了最後一位元素,則下一次從頭開始
if (p == source + new_n - 1) else
} if (new_n == 1)
} printf("the last number is %d\n", *source);
free(source);
source = null;
return 0;
}// 去除值為0的元素,重整陣列長度
int del_zero(int *p, int *source, int new_n, int *temp)
new_n = i;
int j;
for (j = 0, p = source; j < new_n; j++)
return new_n;
}
linux環境下,clang編譯,測試執行結果:
(1)
enter a num > 0 ==> people quantity: 0
number is too small. bye!
(2)
enter a num > 0 ==> people quantity: 1
the last number is 1
(3)
enter a num > 0 ==> people quantity: 2
the last number is 2
(4)
enter a num > 0 ==> people quantity: 3
the last number is 2
(5)
enter a num > 0 ==> people quantity: 4
the last number is 1
(6)
enter a num > 0 ==> people quantity: 5
the last number is 4
(7)
enter a num > 0 ==> people quantity: 6
the last number is 1
(8)
enter a num > 0 ==> people quantity: 7
the last number is 4
(9)
enter a num > 0 ==> people quantity: 11
the last number is 7
(10)
enter a num > 0 ==> people quantity: 16
the last number is 8
100人報數,數到3退出遊戲
有n個人圍成一圈,順序排號。從第乙個人開始報數 從1到3報數 凡報到3的人退出圈子,問最後留下的是原來第幾號的那位。這個題目比較經典,也被成為約瑟夫環問題,有興趣的朋友可以去搜搜約瑟夫環。做乙個簡單的示例,取10個人來報數,然後退出 從上面的示例,可以看出 定義初始陣列,陣列位置初始值為0 報數器只...
小孩報數(順序迴圈佇列版) (10 分
有若干個小孩圍成一圈,現從指定的第1個開始報數,報到第 w個時,該小孩出列,然後從下乙個小孩開始報數,仍是報到w個出列,如此重複下去,直到所有的小孩都出列 總人數不足w個時將迴圈報數 求小孩出列的順序。演算法要求 使用順序迴圈佇列來儲存所有小孩,報數時小孩出隊,未數到w時,接著入隊 數到w時,輸出小...
小孩報數(順序迴圈佇列版) (10 分
有若干個小孩圍成一圈,現從指定的第1個開始報數,報到第 w個時,該小孩出列,然後從下乙個小孩開始報數,仍是報到w個出列,如此重複下去,直到所有的小孩都出列 總人數不足w個時將迴圈報數 求小孩出列的順序。演算法要求 使用順序迴圈佇列來儲存所有小孩,報數時小孩出隊,未數到w時,接著入隊 數到w時,輸出小...