qq_41104917 2019-03-16 13:47 采纳率: 50%
浏览 778
已采纳

csp小明放学,请求大佬帮忙指点错误

问题描述:提交只得了30分,但是自己太垃圾没明白是哪里出了问题

#include <iostream>
#include <vector>
#include <stdio.h>
#include <stdlib.h>

using namespace std;

int main(){
    int r,y,g;
    int n;
    long long sum=0;
    vector<int> state;
    vector<int> time;
    scanf("%d %d %d",&r,&y,&g);
    scanf("%d",&n);
    int temp;
    for (int i=0;i<n;i++){
        scanf("%d",&temp);
        state.push_back(temp);
        scanf("%d",&temp);
        time.push_back(temp);
    }
    int sum1=0;
    for (int i=0;i<n;i++){
        if (state[i]==0){
            sum=sum+time[i];
        }
        else if (state[i]==1){
            sum1=sum%(r+y+g);
            if(sum1-time[i]<0){
                sum=sum+time[i]-sum1;
            }
            else if(sum1-time[i]<g&&sum1-time[i]>=0){

            }
            else if(sum1-time[i]<g+y&&sum1-time[i]>=g){
                sum=sum+y-sum1+time[i]+g+r;
            }
            else if (sum1-time[i]>=g+y&&sum1-time[i]<y+r+g){
                sum=sum+r-sum1+time[i]+g+y; 
            }
        }
        else if (state[i]==2) {
            sum1=sum%(r+y+g);
            if(sum1-time[i]<0){
                sum=sum+time[i]-sum1+r;
            }
            if(sum1-time[i]<r&&sum1-time[i]>=0){
                sum=sum+r-sum1+time[i];
            }
            if(sum1-time[i]<g+r&&sum1-time[i]>=r){
            }
            if (sum1-time[i]>=g+r&&sum1-time[i]<y+r+g){
                sum=sum+y+r+g-sum1+time[i]; 
            }
        }
        else if (state[i]==3){
            sum1=sum%(r+y+g);
            if(sum1-time[i]<0){
            }
            if(sum1-time[i]<y&&sum1-time[i]>=0){
                sum=sum+y-sum1+time[i]+r;
            }
            if(sum1-time[i]<y+r&&sum1-time[i]>=y){
                sum=sum+r+y-sum1+time[i];
            }
            if (sum1-time[i]>=y+r&&sum1-time[i]<y+r+g){

            }
        } 
    }
    printf("%lld",sum);
    return 0;
}
  • 写回答

1条回答 默认 最新

  • 小明小华小红 2019-03-18 17:23
    关注

    else if (state[i]==2)代码段的最后一句 sum=sum+y+r+g-sum1+time[i]; 有问题,等完黄灯之后还要再等一个红灯,所以要再+r, 即 sum=sum+y+r+g-sum1+time[i] + r;

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败