首页 > 代码库 > 约瑟夫问题 算法很简单保证每隔人都能看懂用数组实现 利用循环删除数组中的元素
约瑟夫问题 算法很简单保证每隔人都能看懂用数组实现 利用循环删除数组中的元素
#include<iostream> using namespace std; const int size = 1000; void ArrDel() { int arr[size]; //循环结束标志,一直循环到数组中只剩下最后一个元素结束 int currentNum = size; int count = 0; for (int k = 0; k < size; k++) { arr[k] = k; } //currentNum==1表示数组中只剩下最后一个元素 是循环结束的标志 for (int i = 0; currentNum != 1; i = (i + 1) % 1000) { if (arr[i] != -1) { if (count >= 0 && count < 2) { count++; } //else if(count%3==0) else if (count==2) { //当数组的值为-1是表示数组的元素被删除 arr[i] = -1; currentNum--; //实现每次查三个删除第三个元素 count = 0; } } } //遍历操作后的数组 for (int i = 0; i < 1000; i++) { if (arr[i] != -1) { printf("%d", arr[i]); } } } void main() { ArrDel(); system("pause"); }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。