題目:有乙個陣列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(刪除),如此迴圈直到最後乙個數被刪除。
題解一: 暴力解法,模擬,一步一步來。
1 #include2using
namespace
std;34
intmain()
10 vectorv(n);
11for(int i=0;i)
14 vector v_b(n,false
);15
16if(n==1)19
20int count=0; //
刪除的count
21int idx=-1;22
while(count!=n-1)29
}30 v_b[idx]=true
;31 count++;32}
33for(;v_b[idx]==true;idx=(idx+1)%n)
36 cout38return0;
3940 }
題解二:運用佇列的思想進行迴圈插入和刪除。
1 #include2using
namespace
std;
3int
main()413
int count=0;14
while(q.size()!=1)15
23else
2428}29
int c=q.front();
30 cout32return0;
33 }
題解三: 約瑟夫環問題(以後再看)
1//遞推公式:f[1] = 0 ,f[n] = (f[n - 1] + k) mod n
//2 #include 3
using
namespace
std;
4int lastnum(int
n) 10
intmain()
Array 陣列刪除最後乙個元素
1 問題描述 做單選題,由於傳入的題目選項為string型別,用分號隔開,所以準備切割分號,然後逐個展示,但是,最後一項有個空格,非常討厭 console.log opts陣列如下 console.log scope.opts 去掉最後乙個元素 空格 var bb scope.opts pop co...
php獲取並刪除陣列的第乙個和最後乙個元素
php中如何獲取並刪除陣列的第乙個或者最後乙個元素?其實這兩個過程都可以通過php自帶的函式 array pop 和 array shift 來完成,下面就具體介紹一下如何來操作。1 使用 array pop 刪除陣列的最後乙個元素,例如 arr array a b c result array p...
解決for迴圈有時只輸出最後乙個結果
我們平常用都是這樣的 for var i 0 i 3 i 有時候列印i出來的是2,也有時候是按照順序打出來的,但是很不穩定。我們要操作就很麻煩,for let i 0 i 3 i 把var換成let就可以了,因為let宣告的變數只在它所在的 塊有效,var命令宣告的變數i,在全域性範圍內都有效,所以...