牛客題解 發郵件錯排問題

2021-10-03 19:53:56 字數 1329 閱讀 3766

nowcoder每天要給很多人發郵件。有一天他發現發錯了郵件,把發給a的郵件發給了b,把發給b的郵件發給了a。於是他就思考,要給n個人發郵件,在每個人僅收到1封郵件的情況下,有多少種情況是所有人都收到了錯誤的郵件?

即沒有人收到屬於自己的郵件。

他給的測試用例和輸入輸出描述是這樣的:

n個郵件放入n個郵箱,我們用d(n)表示,那麼d(n-1)的意思就是說n-1個郵件放入n-1個郵箱

前括弧  **真的好簡短  後括弧

#include

#include

using

namespace std;

intmain()

;for

(int i =

3; i <

21; i++

)int n;

while

(cin >> n)

system

("pause");

return0;

}

廣場上站著一支隊伍,她們是來自全國各地的扭秧歌代表隊,現在有她們的身高資料,請你幫忙找出身高依次遞增的子串行。 例如隊伍的身高資料是(1、7、3、5、9、4、8),其中依次遞增的子串行有(1、7),(1、3、5、9),(1、3、4、8)等,其中最長的長度為4。

咱再來看下測試用例的輸入輸出 :

我先說哈,我的**在vs上跑過了,在牛客上沒跑過,時間複雜度太大了,迴圈太多超時了,所以先放在這,等我學的好點了再來改進。

我的思路:先以第乙個數為基準,max記錄他的下標,從他往後找第乙個比他大的數,max記錄他的下標並把該數寫入陣列,一直找到結束。在進行找第二個比他大的數,max記錄下標一直到結束。這一輪結束後,在以第二個數為基準,找比他大的數,依次類推。

**:

//時間複雜度太大了,最後強調一遍

intthemaxlength

(vector<

int> a)

for(

int k = max1+

1; k < a.

size()

; k++)}

if(ret.

size()

> max)

max = ret.

size()

; ret.

clear()

;}}return max;

}

發郵件 錯排問題

3 參考 發郵件時間限制 1000 ms 記憶體限制 32768 kb 長度限制 100 kb 判斷程式 standard 來自 小小 題目描述 nowcoder每天要給很多人發郵件。有一天他發現發錯了郵件,把發給a的郵件發給了b,把發給b的郵件發給了a。於是他就思考,要給n個人發郵件,在每個人僅收...

牛客 發郵件

題目傳送門 點我 nowcoder每天要給很多人發郵件。有一天他發現發錯了郵件,把發給a的郵件發給了b,把發給b的郵件發給了a。於是他就思考,要給n個人發郵件,在每個人僅收到1封郵件的情況下,有多少種情況是所有人都收到了錯誤的郵件?即沒有人收到屬於自己的郵件。結合我們的做題步驟 1 定義乙個能夠清楚...

錯排問題解法

背景 同室四人各寫一張賀卡,先集中起來,然後每人從中拿一張別人送出的賀卡,四張賀卡的不同分配方式有多少種?問題 錯排問題 有n個正整數1,2,3,n,將這n個正整數重新排列,使其中的每乙個數都不在原來的位置上,這種排列稱為正整數1,2,3,n的錯排,問這n個正整數的排列方法有多少種?遞推公式f n ...