有一個數組a[N]順序存放0~N-1,要求每隔兩個數刪掉一個數,到末尾時循環至開頭繼續進行,求最后一個被刪掉的數的原始下標位置。以8個數(N=7)為例:{0,1,2,3,4,5,6,7},0->1->2(刪除)->3->4->5(刪除)->6->7->0(刪除),如此循環直到最后一個數被刪除。


// ConsoleApplication12.cpp : 定義控制台應用程序的入口點。
//

#include "stdafx.h"
// ConsoleApplication12.cpp : 定義控制台應用程序的入口點。
//

#include<iostream>
#include<vector>
using namespace std;

void print(vector<int> vec)
{
	for (int i = 0;i < vec.size();++i)
	{
		cout << vec[i] << " ";
	}

}
int main()
{
	vector<int> sources;
	vector<int> temp;
	int num;
	int flag;
	cin >> num;
	if (num > 1000)
	{
		flag = 1000;
		num = 1000;
	}
	else
	{
		flag = num;
	}


	while (flag != 0)
	{

		flag--;
		sources.push_back(flag);//從大到小存數據
		
	}

	//循環終止條件
	int i = sources.size()-3;
	int deleteNum= 0;//記錄刪除節點的個數
	temp = sources;

	while (sources.size() != 1)
	{

//		temp.clear();

		num = 0;
		while (i>=0)
		{
			temp.erase(temp.begin() + i );
			i = i -3 ;
		}

		//cout << "sources:"; print(sources);cout << endl;
	//	cout << "temp:"; print(temp);cout << endl;

		if (i== -1)
		{
			i = temp.size()-1;
			
		}
		else if (i == -2)
		{
			i = temp.size() - 2;
		}
		else
		{
			i = temp.size() - 3;
			
		}
		sources = temp;

	}

	cout << sources[0] << endl;

	return 0;
}

//注意:遇到中循環刪除指針的問題,可以倒着刪除


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



猜您在找 對於一個由0..n的所有數按升序組成的序列,我們要進行一些篩選,每次我們取當前所有數字中從小到大的第奇數位個的數,並將其丟棄。重復這一過程直到最后剩下一個數。請求出最后剩下的數字。 有1到100共100個數, 從1開始, 每隔1, 2, 3... 個數拿走一個數, 最后剩下幾?(約瑟夫環) 初學者習題練習。從控制台輸入一個數n,使用for循環實現求n! 提示:n! =n*(n-1)*(n-2)*…*1 升級:求1!+2!+3!+…+n!的值 Leetcode練習(Python):哈希表類:第202題:編寫一個算法來判斷一個數 n 是不是快樂數。 「快樂數」定義為:對於一個正整數,每一次將該數替換為它每個位置上的數字的平方和,然后重復這個過程直到這個數變為 1,也可能是 無限循環 但始終變不到 1。如果 可以變為  1,那么這個數就是快樂數。 如果 n 是快樂數就返回 True ;不是,則返回 False 。 react 表單項動態刪除,刪掉的是最后一個,因為index for循環每隔一秒輸出一個數字 有17個人圍成一圈(編號為0~16),從第 0號的人開始從 1報數, 凡報到 3的倍數的人離開圈子,然后再數下去,直到最后只剩下一個人為止。 問此人原來的位置是多少號? awk打印第n個參數到最后一個技巧/將n行組成一列 合並兩個有序鏈表,將兩個升序鏈表合並為一個新的升序鏈表並返回。 新鏈表是通過拼接給定的兩個鏈表的所有節點組成的。 例如:輸入 1->2->4,1->3->4->5,輸出:1->1->2->3->4->4->5 #6 判斷一個數是否為2的n次方
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM