zoukankan      html  css  js  c++  java
  • Google CodeJam 2016 round3-A.Teaching Assistant

    题目描述:

    原题是纯英文,大意是:你每天可以选择一门课去学习,选题和提交答案。题目为Coding或者Jamming。选的题目如果和老师选的一致,提交答案也匹配,最后可以得10分,若选题不一致只能得5分。若提交答案不一致要扣五分。求最大的得分总和。

    题目样例:

    input:

    5
    CCJJ
    CCJJ
    CJCJ
    JCCJ
    CCCCCC

    output:

    Case #1: 20
    Case #2: 20
    Case #3: 10
    Case #4: 20
    Case #5: 30

    解题思路:把问题化为用栈可以解决的括号匹配问题。可以完全实现括号匹配时一组算10分,无法括号匹配时一组算5分。

    这里使用了stl模板(真是太棒了!),而且提交文件的时候它检测程序会给你一个样例文本让你保存到本地文件夹,而后把输出样例放到另一个文件中。(系统只负责对答案,不负责运行),所以代码中还加入了读写文件的代码。

     1 #include<iostream>
     2 #include<stack>
     3 #include<cstdio>
     4 using namespace std;
     5 int main()
     6 {
     7     freopen("in.txt","r",stdin);
     8     freopen("out.txt","w",stdout);
     9     int t;
    10     cin>>t;
    11     for(int j=1; j<=t; j++)
    12     {
    13         stack<char>S;
    14         string s;
    15         cin>>s;
    16         int ans=0;
    17         for(int i=0; i<s.size(); i++)
    18         {
    19             if(S.empty()||S.top()!=s[i])
    20             {
    21                 S.push(s[i]);//不一致时把字符串顶端推进来
    22             }
    23             else //否则发生匹配
    24             {
    25                 S.pop();ans+=10;
    26             }
    27         }
    28         ans+=S.size()/2*5;
    29         printf("Case #%d: %d
    ",j,ans);
    30     }
    31 
    32 }
  • 相关阅读:
    loj10008家庭作业
    loj10006数列分段
    loj10005数列极差
    loj10004智力大冲浪
    codevs 1996 矿场搭建
    11.3 上午考试
    11.2 晚上考试
    11.2 下午考试
    11.2 上午考试
    11.1 下午考试
  • 原文地址:https://www.cnblogs.com/AKsnoopy/p/8303960.html
Copyright © 2011-2022 走看看