首页 > 网易笔试,只完成了第一题
头像
Sun浅雨
编辑于 2020-08-08 21:33
+ 关注

网易笔试,只完成了第一题

1.素数的个数

牛牛现在有一个包含N的正整数的数组a,牛牛可以将其中的每个数a[i] 都拆成若干个和为 a[i] 的整数,牛牛想知道这个数组最多能有多少素数?
输入:
n  数组长度
n个整数 a[i]
1 <= n <= le6     1 <= a[i] <= le9
#include<bits/stdc++.h>

using namespace std;

int main()
{
    long long n,num,res = 0;
    cin >> n;
    
    for(int i = 0; i < n; i++) {
        cin >> num;
        res += (num / 2);
    }
    cout << res << endl;
    return 0;
}

其它就不会了,嗨,还得加强训练

复盘:21:25

2.排列题

还未做

3. 两个人平分物品,不能平分的丢弃

给了 n 个物品的价值。给两个人平分(数量可以不一样,价值总和要一样),可以舍弃那些没法平分掉物品,输出最少舍弃多少价值。
#include<bits/stdc++.h>

using namespace std;
int a[10000],n;
int res;

void dfs(int i, int s1, int s2, int delet) {
   if(i == n)   //当第一轮分完,进行判断
   {
       if(s1 == s2 && delet < res) {   //若两个人的价值相等,判断丢弃值是否最小,是则更新
            res = delet;
       }
       return;   //结束本轮判断
   }

   dfs(i+1,s1+a[i],s2,delet);  //把a[i]分给第一个人
   dfs(i+1,s1,s2+a[i],delet);  //把a[i]分给第二个人
   dfs(i+1,s1,s2,delet+a[i]);  //丢弃
}

int main()
{
    int t;
    cin >> t;
    while(t--) {
        cin >> n;
        res = 0;
        for(int i = 0; i < n; i++) {
            cin >> a[i];
            res += a[i];
        }
        dfs(0,0,0,0);
        cout << res << endl;
    }
    return 0;
}


4. 构建生成树

未做


全部评论

(82) 回帖
加载中...
话题 回帖

相关热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐