有没有人今天做完美世界的笔试= =

编程一个25% 一个AC是不是菜的扣脚
全部评论
#include <string> #include <cstring> #include <cstdio> #include <iostream> #include <malloc.h> #include <vector> using namespace std; const int maxn = 25; int main() { //for(int i = 0; i < 12; ++i) cout << str[i] << endl; int n, m, t; int wp[maxn]; int cap[maxn]; int res; while(cin >> n >> t >> m){ res = 0; for(int i = 0; i < n; ++i) cin >> wp[i]; for(int idx = 0; idx < (1 << n); ++idx){ int bit = idx; int ans = 0; int curbag = 0; for(int i = 0; i < m; ++i) cap[i] = t; for(int i = 0; i < n; ++i){ if(bit & 1){ if(cap[curbag] >= wp[i]) { cap[curbag] -= wp[i]; ans++; } else { // cap不够用新包 ++curbag; if(curbag >= m) break; else { if(t >= wp[i]){ //空背包放得下 cap[curbag] -= wp[i]; ans++; } } } } bit >>= 1; } res = max(ans, res); //cout << idx << " " << ans << endl; } cout << res << endl; } return 0; }
点赞 回复 分享
发布于 2016-04-25 23:37
回溯第一题 #include <iostream> #include<string> #include<vector> #include<stack> #include<vector> using namespace std; int max = 0; void dfs(vector<int> number, vector<int> capacity, int n, int m, int index1, int index2, int corrent); int main(int argc, char* argv[]) { int n; int t; int m; while (cin >> n) { cin >> t; cin >> m; vector<int> number(n); for (int i = 0; i < n; i++) { cin >> number[i]; } vector<int> capacity(m); for (int i = 0; i < m; i++) { capacity[i] = t; } int index1 = 0; int index2 = 0; int corrent = 0; dfs(number,capacity, n, m,0,0,0 ); cout << max << endl; } return 0; } void dfs(vector<int> number, vector<int> capacity, int n, int m, int index1,int index2,int corrent) { if (index1 == n||index2==m) { if (corrent > max) max = corrent; return; } if (capacity[index2] >= number[index1]) { capacity[index2] = capacity[index2] - number[index1]; index1++; corrent++; dfs(number, capacity, n, m, index1, index2, corrent); index1--; capacity[index2] = capacity[index2] +number[index1]; corrent--; } else if (capacity[index2] <= number[index1] && index2 + 1 < m&&capacity[index2 + 1] > number[index1]) { index2++; capacity[index2] = capacity[index2] - number[index1]; index1++; corrent++; dfs(number, capacity, n, m, index1, index2, corrent); index1--; corrent--; capacity[index2] = capacity[index2] + number[index1]; index2--; } index1++; dfs(number, capacity, n, m, index1, index2, corrent); index1--; }
点赞 回复 分享
发布于 2016-04-25 21:32
#include <iostream> using namespace std; void get(int *a, int N,int i, int M, int j, int T, int k, int num, int& max){ //存在第j个背包 if(j<=M && i<=N){ //取第i个物品 if(a[i-1] <= k){ //第j个背包放得下物品i if(max < (num+1)) max = num+1; get(a,N,i+1,M,j,T,k-a[i-1],num+1,max); } else{ //第j个背包放不下物品i,所以决定扔掉第j个背包 get(a,N,i,M,j+1,T,T,num,max); } //不取第i个物品 get(a,N,i+1,M,j,T,k,num,max); } } int main(){ int N,T,M; int max; while(cin>>N>>T>>M){ if((N>=1&&N<=20)&&(T>=1&&T<=20)&&(M>=1&&M<=20)){ int *a = new int[N]; for(int i=0;i<N;i++) cin>>a[i]; max = 0; get(a,N,1,M,1,T,T,0,max); cout<<max<<endl; delete []a; } } return 0; }
点赞 回复 分享
发布于 2016-04-26 10:20
我两道题一模一样除了输入不一样不知道什么鬼
点赞 回复 分享
发布于 2016-04-25 23:13
输出数字的中文读法的那道题一直88%。。。还有那些测试用例没考虑到??
点赞 回复 分享
发布于 2016-04-25 22:50
卧槽,今天笔试?忘记了,,
点赞 回复 分享
发布于 2016-04-25 21:55
刚好期中考,考不了,进去的时候只有20分钟了。。。不过5点做了银联的笔试,现在就发短信了。。。
点赞 回复 分享
发布于 2016-04-25 21:05
一个17%一个AC ,没有AC的题目是按百分比得分还是即使99%也没有分数?
点赞 回复 分享
发布于 2016-04-25 20:56
做完了,第一题DP,第二题细节问题。。
点赞 回复 分享
发布于 2016-04-25 20:56
一个33% 一个AC。看来大家水平都差不多
点赞 回复 分享
发布于 2016-04-25 20:54

相关推荐

04-15 23:42
中山大学 Java
ResourceUtilization:过几天楼主就会捧着一堆offer来问牛友们该怎么选辣
点赞 评论 收藏
分享
勤劳的鲸鱼在okr拆解:没有别的选择就去吧,有实习和没实习找工作是天上地下
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务