码迷,mamicode.com
首页 > 其他好文 > 详细

11-05-sdust-个人赛赛后随想

时间:2014-11-07 23:26:25      阅读:228      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   color   ar   os   sp   for   

第二次打个人赛

这次居然打秃了,被A题卡的体无完肤.....结果之后转D题心里挂着A题...D题也被卡。

然后第二天不甘心,翘课来机房敲昨天的题,结果两题完全重新敲,都是10分钟左右敲完代码,A题1掉

然后D题还真有点说头...用了一上午的时间去找到哪错了,领悟到了不少东西

bubuko.com,布布扣
#include <iostream>
#include <string>
#include <cstring>
#include <cstdio>
using namespace std;
int check(string s){
    for (int i=2;i<s.size();i++){
        if (s[i]==C) return 1;
    }
    return 0;
}
int work1(string s){
    int r,c;
    sscanf(s.c_str(),"R%dC%d",&r,&c);
    int a[1000];
    memset(a,0,sizeof(a));
    int top=0;
    while (c){
        a[top++]=c%26;
        c/=26;
        if (a[top-1]==0) a[top-1]=26,c--;
    }
    for (int i=top-1;i>=0;i--)
        putchar(a[i]+A-1);
    cout<<r<<endl;
}
int mypow(int t){
    int ans=1;
    for (int i=1;i<=t;i++)
        ans*=26;
    return ans;
}
int work2(string s){
    int a[1000];
    memset(a,0,sizeof(a));
    int top=0;
    while (s[top]>=A&&s[top]<=Z)  a[top]=s[top],top++;
    int r,c=0;
    int t=0;
    for (int i=top-1;i>=0;i--)
        c+=(a[i]-A+1)*mypow(t++);
    char st[1000]={\0};
    s.copy(st,s.size()-top,top);
    //st[s.size()]=‘\0‘;
    sscanf(st,"%d",&r);
    cout<<"R"<<r<<"C"<<c<<endl;
}
int main()
{
    int testcase;
    cin>>testcase;
    while (testcase--){
        string s;
        cin>>s;
        if (s[0]==R&&s[1]>=0&&s[1]<=9&&check(s)) work1(s);
            else work2(s);
    }    
}
View Code

 

首先现学现卖学会了怎么用sscanf()

然后即使是字符数组,也一定要记得初始化

最后也是最重要的一点,思路不清晰千万千万不要下手,否则敲到一半才发现是错的

 

11-05-sdust-个人赛赛后随想

标签:style   blog   http   io   color   ar   os   sp   for   

原文地址:http://www.cnblogs.com/bingolibing/p/4082521.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!