有乙個長度為n的陣列 p1, p2, p3, ⋯, pnp1, p2, p3, ⋯, pn ,裡面只包含1到n的整數,且每個數字都不一樣。現在要對這個陣列進行從小到大排序,排序的時候只能是把乙個數字拿過來放到陣列末尾或者開頭,問最少要操作幾次才能使得這個陣列從小到大排序。
樣例解釋:
先把4移動到最後,然後再把5移動到後。
收起
單組測試資料。第一行乙個整數n (1≤n≤100000),表示陣列的長度。
第二行有n個整數 pi (1≤pi≤n, 如果 i≠j,那麼pi≠pj ) ,表示陣列中的數字。
輸出乙個整數,表示最少要操作幾次才能使得陣列從小到大有序。
54 1 2 5 3
2思路:求乙個最長的連續的子串(如樣例中的1,2,3) 的長度len, 答案即為 n-len
**如下:
#includeusing namespace std;
int a[100005];int n;
int par[100005];
bool vis[100005];
int dp[100005];
int len=0;
int dfs(int i)
int p=par[i];
if(dp[p]!=0)
return dfs(par[i]);
}int main()
else vis[a[i]]=1;
}for(int i=1;i<=n;i++)
len=max(dfs(i),len);
int ans=n-len;
cout
}
51nod 首尾排序法 01
題意 有乙個長度為n的陣列 p1,p2,p3,pnp1,p2,p3,pn 裡面只包含1到n的整數,且每個數字都不一樣。現在要對這個陣列進行從小到大排序,排序的時候只能是把乙個數字拿過來放到陣列末尾或者開頭,問最少要操作幾次才能使得這個陣列從小到大排序 輸入要求 第一行乙個整數n 1 n 100000...
結對開發6 首尾相連矩陣
結對成員 范德一 趙永恆 一.題目與要求 題目 返回乙個二維整數陣列中最大子陣列的和 要求 1 輸入乙個二維整形陣列,陣列裡有正數也有負數。2 二維陣列首尾相接,象個一條首尾相接帶子一樣。3 陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和 二.設計思路 在上一次的以為迴圈陣列的基礎上...
NYOJ 983 首尾相連陣列的最大子陣列和
時間限制 1000 ms 記憶體限制 65535 kb 難度 4 描述給定乙個由n個整數元素組成的陣列arr,陣列中有正數也有負數,這個陣列不是一般的陣列,其首尾是相連的。陣列中乙個或多個連續元素可以組成乙個子陣列,其中存在這樣的子陣列arr i arr n 1 arr 0 arr j 現在請你這個...