算法强训day18

一、压缩字符串

链接:压缩字符串(一)_牛客题霸_牛客网

#include<iostream>
using namespace std;
#include<vector>
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param param string字符串
     * @return string字符串
     */
    string compressString(string param) {

        string s;
        s = param;
        vector<char> a;
        vector<int> num;
        for (int i = 0; i < s.size(); i++)
        {
            if ((s[i] <= 'z' && s[i] >= 'a') || (s[i] >= 'A' && s[i] <= 'Z'))
            {
                if (a.empty() || s[i] != a.back())
                {
                    a.push_back(s[i]);
                    num.push_back(1);
                }
                else
                    num.back()++;
            }
        }
        string s2;
        for (int i = 0; i < a.size(); i++)
        {
            s2.push_back((a[i]));
            if (num[i] != 1)
            {
                int k = num[i];
                string s4;
                while (k)
                {
                    s4.push_back(k % 10 + '0');
                    k /= 10;
                }
                string::reverse_iterator it = s4.rbegin();
                while (it != s4.rend())
                {
                    s2.push_back(*it);
                    it++;
                }
            }
        }
        return s2;
    }
};

二、chika和蜜柑

先用甜度排序,再酸度排序,取前K个

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
#include<map>
struct mcomp
{
	bool operator()(pair<long long, long long>& a, pair<long long, long long>& b)
	{

		if (a.first == b.first)
			return a.second > b.second;
		else
			return false;
	}
}mcomp;
int main()
{
	int n, k;
	cin >> n >> k;
	vector<long long> so;
	vector<long long> sw;
	for (int i = 0; i < n; i++)
	{
		long long x;
		cin >> x;
		so.push_back(x);
	}
	for (int i = 0; i < n; i++)
	{
		long long x;
		cin >> x;
		sw.push_back(x);
	}
	multimap<long long, long long, greater<long long>> m;

	for (int i = 0; i < n; i++)
	{
		m.insert(pair<long long, long long>(sw[i], so[i]));
	}
	vector < pair < long long, long long >> v(m.begin(), m.end());
	sort(v.begin(), v.begin() + k, mcomp);

	long long max1 = 0;
	long long max2 = 0;
	for (int i = 0; i < k; i++)
	{
		max1 += v[i].first;
		max2 += v[i].second;
	}
	cout << max2 << ' ' << max1;
}

三、01背包问题

链接:01背包_牛客题霸_牛客网

老问题了,直接复制粘贴

class Solution
{
 int dp[1010] = { 0 };
public:
 int knapsack(int V, int n, vector<vector<int> >& vw) 
 {
 for(int i = 0; i < n; i++)
 {
 for(int j = V; j >= vw[i][0]; j--)
 {
 dp[j] = max(dp[j], dp[j - vw[i][0]] + vw[i][1]);
 }
 }
 return dp[V];
 }
};

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
朴素贝叶斯算法原理: 朴素贝叶斯算法是一种基于贝叶斯定理和特征条件独立假设的分类算法。其基本思想是对于给定的待分类项,求解在此项出现的条件下各个类别出现的概率,哪个类别的概率最大,就认为此待分类项属于哪个类别。具体来说,朴素贝叶斯算法假设每个特征与其他特征之间相互独立,即每个特征都独立地对分类结果产生影响。在实际应用中,朴素贝叶斯算法常用于文本分类、垃圾邮件过滤等领域。 Python实现: Python中有多个库可以实现朴素贝叶斯算法,其中比较常用的是scikit-learn库。下面是一个简单的示例代码,用于展示如何使用scikit-learn库实现朴素贝叶斯算法进行文本分类: ```python from sklearn.naive_bayes import MultinomialNB from sklearn.feature_extraction.text import CountVectorizer # 构建训练数据 train_data = ['this is a good book', 'this is a bad book', 'good day', 'bad day'] train_labels = ['positive', 'negative', 'positive', 'negative'] # 构建特征提取器 vectorizer = CountVectorizer() # 将文本转换为特征向量 train_features = vectorizer.fit_transform(train_data) # 构建朴素贝叶斯分类器 clf = MultinomialNB() # 训练分类器 clf.fit(train_features, train_labels) # 构建测试数据 test_data = ['good book', 'bad book', 'happy day'] test_features = vectorizer.transform(test_data) # 进行预测 predicted_labels = clf.predict(test_features) # 输出预测结果 print(predicted_labels) # 输出:['positive' 'negative' 'positive'] ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值