1.单词

2.翻译
化学习是一种通过与环境交互来学习最优策略的机器学习方法。在强化学习框架中,一个智能体通过观察环境状态并采取相应的行动,从而获得奖励或惩罚。智能体的目标是通过不断的探索和学习,找到能够最大化长期累计奖励的策略。与监督学习不同,强化学习通常不依赖于大量标注数据,而是通过试错的方式不断改进决策能力。强化学习已经在许多复杂任务中取得了成功,例如机器人控制、自动驾驶以及游戏人工智能。在著名的围棋程序AlphaGo中,强化学习与深度神经网络相结合,使得计算机能够达到甚至超过人类顶尖棋手的水平。然而,在现实应用中,强化学习仍然面临样本效率低和训练成本高等问题。
3.代码
114.成绩统计
#include<bits/stdc++.h>
using namespace std;
int main()
{
vector<string> name(5);
vector<int> shuxue(5);
vector<int> zhengzhi(5);
for(int i=0;i<5;i++)
{
cin>>name[i];
cin>>shuxue[i];
cin>>zhengzhi[i];
}
for(int i=0;i<5;i++)
{
cout<<name[i]<<" ";
int avg=(shuxue[i]+zhengzhi[i])/2;
cout<<avg<<endl;
}
int max_grade=0;
int idx=0;
for(int i=0;i<5;i++)
{
if(shuxue[i]>max_grade)
{
max_grade=shuxue[i];
idx=i;
}
}
cout<<name[idx]<<" "<<shuxue[idx]<<" "<<zhengzhi[idx];
return 0;
}
暴力解即可
115.摩托车
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,m;
while(cin>>n>>m)
{
vector<string> require_name(n);
for(int i=0;i<n;i++)
cin>>require_name[i];
vector<string> store_name(m);
vector<string> color(m);
vector<string> size(m);
for(int i=0;i<m;i++)
{
cin>>store_name[i];
cin>>color[i];
cin>>size[i];
}
bool ok=false;
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(require_name[i]==store_name[j])
{
cout<<store_name[j]<<" "<<color[j]<<" "<<size[j]<<endl;
ok=true;
}
}
}
if(!ok)
cout<<"Not found!"<<endl;
}
return 0;
}
暴力匹配
116扑克牌
#include<bits/stdc++.h>
using namespace std;
// 全局数组保留你的原始定义
vector<string> row1(13);
vector<string> row2(13);
vector<string> row3(13);
vector<string> row4(13);
// 新增:定义点数权重(解决T/9/8...2的比较问题)
int getRankValue(char c) {
switch(c) {
case 'A': return 14;
case 'K': return 13;
case 'Q': return 12;
case 'J': return 11;
case 'T': return 10;
default: return c - '0'; // 9/8...2转数字
}
}
// 新增:定义花色权重
int getSuitValue(char c) {
switch(c) {
case 'S': return 4; // 黑桃>S
case 'H': return 3; // 红心>H
case 'D': return 2; // 方块>D
case 'C': return 1; // 草花>C
default: return 0;
}
}
// 修复compare1:用索引比较,符合题目排序规则
bool compare1(int i,int j)
{
string a=row1[i];
string b=row1[j];
// 先比点数(第二位)
int rankA = getRankValue(a[1]);
int rankB = getRankValue(b[1]);
if(rankA != rankB)
return rankA > rankB; // 点数降序
// 点数相同,比花色(第一位)
int suitA = getSuitValue(a[0]);
int suitB = getSuitValue(b[0]);
return suitA > suitB; // 花色降序
}
// 修复compare2:逻辑和compare1一致,针对row2
bool compare2(int i,int j)
{
string a=row2[i];
string b=row2[j];
int rankA = getRankValue(a[1]);
int rankB = getRankValue(b[1]);
if(rankA != rankB)
return rankA > rankB;
int suitA = getSuitValue(a[0]);
int suitB = getSuitValue(b[0]);
return suitA > suitB;
}
// 修复compare3:针对row3
bool compare3(int i,int j)
{
string a=row3[i];
string b=row3[j];
int rankA = getRankValue(a[1]);
int rankB = getRankValue(b[1]);
if(rankA != rankB)
return rankA > rankB;
int suitA = getSuitValue(a[0]);
int suitB = getSuitValue(b[0]);
return suitA > suitB;
}
// 修复compare4:针对row4
bool compare4(int i,int j)
{
string a=row4[i];
string b=row4[j];
int rankA = getRankValue(a[1]);
int rankB = getRankValue(b[1]);
if(rankA != rankB)
return rankA > rankB;
int suitA = getSuitValue(a[0]);
int suitB = getSuitValue(b[0]);
return suitA > suitB;
}
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)
{
// 读取数据:保留你的原始读取逻辑
for(int j=0;j<13;j++)
cin>>row1[j];
for(int j=0;j<13;j++)
cin>>row2[j];
for(int j=0;j<13;j++)
cin>>row3[j];
for(int j=0;j<13;j++)
cin>>row4[j];
// 关键修复:索引排序(你的原始错误是直接排string,应该排索引)
vector<int> idx(13); // 构造0-12的索引数组
for(int k=0;k<13;k++) idx[k] = k;
// 对row1:先排索引,再按索引重新整理row1
sort(idx.begin(), idx.end(), compare1);
vector<string> temp1(13);
for(int k=0;k<13;k++) temp1[k] = row1[idx[k]];
row1 = temp1;
// 对row2:同理
sort(idx.begin(), idx.end(), compare2);
vector<string> temp2(13);
for(int k=0;k<13;k++) temp2[k] = row2[idx[k]];
row2 = temp2;
// 对row3:同理
sort(idx.begin(), idx.end(), compare3);
vector<string> temp3(13);
for(int k=0;k<13;k++) temp3[k] = row3[idx[k]];
row3 = temp3;
// 对row4:同理
sort(idx.begin(), idx.end(), compare4);
vector<string> temp4(13);
for(int k=0;k<13;k++) temp4[k] = row4[idx[k]];
row4 = temp4;
// 输出row1:保留你的原始输出逻辑
for(int j=0;j<13;j++)
{
if(j>=1)
cout<<" "<<row1[j];
else
cout<<row1[j];
}
cout<<endl;
// 输出row2
for(int j=0;j<13;j++)
{
if(j>=1)
cout<<" "<<row2[j];
else
cout<<row2[j];
}
cout<<endl;
// 输出row3
for(int j=0;j<13;j++)
{
if(j>=1)
cout<<" "<<row3[j];
else
cout<<row3[j];
}
cout<<endl;
// 输出row4
for(int j=0;j<13;j++)
{
if(j>=1)
cout<<" "<<row4[j];
else
cout<<row4[j];
}
// 修复输出格式:只有非最后一组才输出空行
if(i != n-1)
cout<<endl<<endl;
else
cout<<endl;
// 移除clear():避免容器为空导致后续访问崩溃,直接覆盖即可
}
return 0;
}
每行分开比较,无法直接比较的,转为数字比较,记得比较的是索引