c++算法竞赛之练习篇

为了打牢根基,便于学习接下来的内容,在这一周进行了一个刷题练习。其中需要强调的题目我认为p1909、p1085以及p1424。

首先进行题解的是p1085。

由题目可知我们需要输入7组数据,当津津上课的总时长大于8时就会不高兴,并且输出不高兴的是那一天,那么我们就需要进行最大值的替换与天数的交替,于是我们可以想到用for循环结构解决问题或者使用多重if进行解答。这里小编选择的是if解决问题,代码如下:

#include<bits/stdc++.h>
using namespace std;
int n1,n2;
int z=8;
int n=0;
int t=0;
int main(){
cin>>n1>>n2;
n++;
if(n1+n2>z){
z=n1+n2;
t=n;}
cin>>n1>>n2;
n++;
if(n1+n2>z){
z=n1+n2;
t=n;}
cin>>n1>>n2;
n++;
if(n1+n2>z){
z=n1+n2;
t=n;}
cin>>n1>>n2;
n++;
if(n1+n2>z){
z=n1+n2;
t=n;}
cin>>n1>>n2;
n++;
if(n1+n2>z){
z=n1+n2;
t=n;}
cin>>n1>>n2;
n++;
if(n1+n2>z){
z=n1+n2;
t=n;}
cin>>n1>>n2;
n++;
if(n1+n2>z){
z=n1+n2;
t=n;}
cout<<t;
return 0;
}

接下来进行解答的是p1909:

由题目可知输入七个数 ,找出所花金额的最小值。首先我们要输入我们所需要铅笔的数量,之后分别输入三种铅笔的数目与金额,直到其达到或超过我们输入所需要铅笔的值。看到这里我们就可以知道我们需要使用的是循环结构了。代码如下:

#include<bits/stdc++.h>
using namespace std;
long n,a1,a2,b1,b2,c1,c2,a,b,c,x[3];
int main(){
cin>>n>>a1>>a2>>b1>>b2>>c1>>c2;
while(a<n){a+=a1;x[0]+=a2;}
while(b<n){b+=b1;x[1]+=b2;}
while(c<n){c+=c1;x[2]+=c2;}
sort(x,x+3);
cout<<x[0]<<endl;
return 0;
}

在这里小编选择了while语句解决问题,首先定义长整型变量,并且定义一个数组来装配所花金额的值,接着我们输入7个变量,用while算出当a或b或c小于n时a,b,c分别为多少将数组x里装配的值进行更新,然后使用sort函数进行快速排序,最后得知x【0】为最小金额所在处,输出x【0】;代码完成。

接下来讲解这周的最后一题p1424。

将题目看完后,如果前面的题目进行了认真的摸索,那么我们可以直接得知这题需要进行for循环和if语句嵌套处理。那么思路不就来了吗?简简单单,有手就行。

代码如下:

#include<bits/stdc++.h>
using namespace std;
int main(){
int x,n,m;
cin>>x>>n;
for(int i=1;i<=n;i++){
if(x!=6&&x!=7)m+=250;
if(x==7)x=1;
else{
x++;}
}
cout<<m;
return 0;}

我们从题目中可以得知小鱼有双休,只有在工作日时进行游动。并且7天一循环,则我们首先输入x代表哪一天,n为经过多少天,然后写出for语句结构,当x不等于6或7时,代表公里的m就加上250,然后当x=7时将x赋值为1,进行新的开始,当x不等于7时,则加1,然后输出m,返回。

到这里本周的题目就此完结,下周继续努力,GoodBye。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值