以下題目的解法均是他人解法,並非本人貢獻
[程式設計題]數列還原
牛牛的作業薄上有乙個長度為 n 的排列 a,這個排列包含了從1到n的n個數,但是因為一些原因,其中有一些位置(不超過 10 個)看不清了,但是牛牛記得這個數列順序對的數量是 k,順序對是指滿足 i < j 且 a[i] < a[j] 的對數,請幫助牛牛計算出,符合這個要求的合法排列的數目。
輸入描述:
每個輸入包含乙個測試用例。每個測試用例的第一行包含兩個整數 n 和 k(1 <= n <= 100, 0 <= k <= 1000000000),接下來的 1 行,包含 n 個數字表示排列 a,其中等於0的項表示看不清的位置(不超過 10 個)。
輸出描述:
輸出一行表示合法的排列數目。
輸入例子:
5 54 0 0 2 0
輸出例子:
2
#include#includeusing
namespace
std;
bool find(vector v,int n) //
查詢v中是否存在整數n
vector
int>> pv; //
全域性變數
void perm(vector &v,int st) //
對v中的數字進行全排列
}} void change(vector &v,vector subv,vector vpos)//
將v中的0用全排之後的數字分別代替
int cal(vector v) //
計算順序對的個數
intmain()
for(int i = 0;ii)
if(v[i]==0
) vpos.push_back(i);
//記錄下vector中0的位置
for(int i = 1;i<=n;++i)
if(!find(v,i))
subv.push_back(i);
perm(subv,0);
vector
vcnt;
for(int i = 0;ii)
int vcntk = 0
;
for(int i = 0;ii)
if(vcnt[i]==k)
++vcntk;
cout
}return0;
}
以下是我自己寫了一遍的**
#include#include#include
using
namespace
std;
void getburpos(const vector &arr, vector &bur, vector &pos);
void per(vector& bur, int
index);
void swap(int &a1, int &a2);
int getres(vector arr, vector pos, int n, int
k);vector
int>>arrper;
intmain()
vector
bur, pos;
getburpos(arr, bur, pos);
per(bur, 0);
int res =getres(arr, pos, n, k);
cout
<< res <}
return0;
}void getburpos(const vector &arr, vector &bur, vector &pos)
for (int i = 1; i<=arr.size(); i++)
return;}
void per(vector&bur, int
index)
for (int i = index; i)
return;}
void swap(int &a1, int &a2)
int getres(vector arr, vector pos, int n, int
k)
int cnt = 0
;
for (int j = 0; j)
for (int k = j + 1; k)
if (cnt ==k)
res++;
}return
res;
}
[程式設計題]合唱團
有 n 個學生站成一排,每個學生有乙個能力值,牛牛想從這 n 個學生中按照順序選取 k 名學生,要求相鄰兩個學生的位置編號的差不超過 d,使得這 k 個學生的能力值的乘積最大,你能返回最大的乘積嗎?
輸入描述:
每個輸入包含 1 個測試用例。每個測試資料的第一行包含乙個整數 n (1 <= n <= 50),表示學生的個數,接下來的一行,包含 n 個整數,按順序表示每個學生的能力值 ai
(-50 <= ai <= 50)。接下來的一行包含兩個整數,k 和 d (1 <= k <= 10, 1 <= d <= 50)。
輸出描述:
輸出一行表示最大的乘積。
輸入例子:
37 4 7
2 50
輸出例子:
49f [ i ] [ j ] [ 最大 / 最小 ]
分別表示,以第i個人為最後乙個(也是必選的)人,加上這個人,已經選了 j 個人,最大可能的乘積和最小可能的乘積。
#include #include#include
#include
#include
#include
#include
using
namespace
std;
typedef
long
long
ll;
int a[55
];ll f[
55][15][2];
intmain()
scanf(
"%d%d
",&kk,&d);
ll ans=0
;
for(int i=1;i<=n;i++)
}ans=max(ans,max(f[i][kk][0],f[i][kk][1
]));
}printf(
"%lld\n
",ans);
return0;
}
2017騰訊內推實習生面試經歷 已獲得offer
1 select,poll,epoll的區別 2 程序通訊的ipc種類 3 有名管道和無名管道的區別 4 程序和執行緒的區別 5 執行緒的私有棧空間 6 簡述tcp通訊中服務端和客戶端的api 7 tcp中的三路握手 8 c語言中的static修飾符 9 程序間如何傳遞檔案描述符 10 程序的虛擬位...
2017騰訊內推實習生面試經歷 已獲得offer
1 select,poll,epoll的區別 2 程序通訊的ipc種類 3 有名管道和無名管道的區別 4 程序和執行緒的區別 5 執行緒的私有棧空間 6 簡述tcp通訊中服務端和客戶端的api 7 tcp中的三路握手 8 c語言中的static修飾符 9 程序間如何傳遞檔案描述符 10 程序的虛擬位...
求職經歷 網易遊戲實習生面試體驗
如果你大學裡有想過從事遊戲開發的話,你對網易遊戲肯定不會陌生,網易開發出過夢幻西遊,倩女幽魂這種端遊大作,可惜在頁遊和手遊方面現在依舊毫無建樹,網易遊戲的特點有以下幾個 關於學歷的事情強調下,下面是各個學校的錄取比例 哎。我怎麼說了好多網易遊戲的特點好像都是在誇網易遊戲啊,那再說下網易遊戲不太好的地...