栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

CCFCSP202109-2直接70分解法C++

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

CCFCSP202109-2直接70分解法C++

2021_9第二题代码70分

这题没有想到比较好的100分解题思路。但是编译的时候还是有些地方错了,需要小心。
题目链接
在编码的时候碰到了问题。

  1. 首先using namespace std切记一定要加!不然就会编译错误!
  2. 然后,定义变量统一在开头!自己是因为忘了定义sumer结果编译出错又找了好久,另外在打for这些打时候同时要打{}以免忘记。
  3. <=和>=不要打错,先比较后等号。
  4. 编码的时候一定要关注核心逻辑,得10分一般都是IO以及判断部分没有问题,数据处理与生成的逻辑有问题。
  5. 当然拿到题目需要先考虑一下得到满分的算法好不好做,会不会做。如果做不出来再考虑用暴力解法。
  6. 通常情况下push_back这种复杂度为O(1)的操作以及在函数中初始化vector都不会影响最终的结果。

看到这题首先的思路还是暴力法,但是自己耍了个小心眼,对输入的数据先进行排序,然后从小到大取数。比如:输入为 [ 3 , 1 , 2 , 0 , 0 , 2 , 0 , 4 , 5 , 0 , 2 ] [3,1,2,0,0,2,0,4,5,0,2] [3,1,2,0,0,2,0,4,5,0,2],排序并取独立值之后得到 [ 0 , 1 , 2 , 3 , 4 , 5 ] [0,1,2,3,4,5] [0,1,2,3,4,5],然后一个一个自小至大尝试,如果后一个比前一个小就退出,结果只得了10分。。发现是逻辑有问题,删掉那个逻辑之后得了70分。后面想了想其实也是有更好的方法的,因为这个本质上也可以用动态规划做。但是已经写了2个小时了,于是还是放弃。

#include
#include
#include
using namespace std;


bool charge(int i,int j,vectorarr){
bool flag1=false;
bool flag2=false;
bool flag3=false;
if(i>=0&&i<=j&&j<=arr.size()-1)flag1=true;
if(i==0||arr[i-1]==0)flag2=true;
if(j==arr.size()-1||arr[j+1]==0)flag3=true;
for(int k=i ;k<=j;k++){if (arr[k]<=0){return false;}}

if(flag1&&flag2&&flag3)return true;
return false;
};//判断代码,满足4个条件返回true.

vector change(int changenum,vector arr){
vector newarr;
for(int i=0;i arr){
int sum=0;
int i=0;int j=0;int si=arr.size();
while(j>num;
vector arr(num,0);
vector arr2(num,0);
int i,j,temp;
for (i=0;i>temp;
arr[i]=temp;
arr2[i]=temp;
}
sort(arr2.begin(),arr2.end());
vector arr3;
arr3.push_back(arr2[0]);j=0;
for(i=1;inewarr=change(arr3[i],arr);
num2=getsum(newarr);
if(sumer<=num2){sumer=num2;}
}//核心逻辑部分
cout<
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/589103.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号