ZD_source code for problem 2971
2008-06-07 11:32
495 查看
题目链接:http://acm.zju.edu.cn/show_problem.php?pid=2971
解题心得:
1,用scanf("%d",&i)接受整型后,再用gets接受带空格的字符串之前要调用getchar将/n滤掉
2,用关键字是字符串的map时要用string类型
#include <stdio.h>
#include <map>
#include <vector>
#include <string>
using namespace std;
map<string,int> times;
map<string,int> str2int;
vector<string> number;
string str[] = {"zero","one","two","three","four","five","six","seven","eight","nine",
"ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen",
"eighteen","nineteen","twenty","thirty","forty","fifty","sixty","seventy",
"eighty","ninety"};
void Input()
{
number.clear();
string temp;
char input[128];
gets(input);
int i;
for(i = 0;input[i] != '/0';i++)
{
if(input[i] != ' ')
{
temp += input[i];
}
else
{
number.push_back(temp);
temp = "";
}
}
number.push_back(temp);
}
void Init()
{
int i;
for(i = 0;i <= 20;i++)
str2int[str[i]] = i;
int j;
for(i = 21,j = 30;i < 28;i++,j += 10)
str2int[str[i]] = j;
times[string("and")] = 1;
times[string("hundred")] = 100;
times[string("thousand")] = 1000;
times[string("million")] = 1000000;
}
void Work()
{
int size = number.size();
int i,temp,result;
for(i = 0,temp = 0,result = 0;i < size;i++)
{
if(times.find(number[i]) != times.end())
{
temp *= times[number[i]];
if(number[i] == "million" || number[i] == "thousand")
{
result += temp;
temp = 0;
}
}
else
{
temp += str2int[number[i]];
}
}
result += temp;
printf("%d/n",result);
}
int main(int argc, char* argv[])
{
Init();
int count;
scanf("%d",&count);
getchar();
while(count >= 1)
{
Input();
Work();
count--;
}
return 0;
}
解题心得:
1,用scanf("%d",&i)接受整型后,再用gets接受带空格的字符串之前要调用getchar将/n滤掉
2,用关键字是字符串的map时要用string类型
#include <stdio.h>
#include <map>
#include <vector>
#include <string>
using namespace std;
map<string,int> times;
map<string,int> str2int;
vector<string> number;
string str[] = {"zero","one","two","three","four","five","six","seven","eight","nine",
"ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen",
"eighteen","nineteen","twenty","thirty","forty","fifty","sixty","seventy",
"eighty","ninety"};
void Input()
{
number.clear();
string temp;
char input[128];
gets(input);
int i;
for(i = 0;input[i] != '/0';i++)
{
if(input[i] != ' ')
{
temp += input[i];
}
else
{
number.push_back(temp);
temp = "";
}
}
number.push_back(temp);
}
void Init()
{
int i;
for(i = 0;i <= 20;i++)
str2int[str[i]] = i;
int j;
for(i = 21,j = 30;i < 28;i++,j += 10)
str2int[str[i]] = j;
times[string("and")] = 1;
times[string("hundred")] = 100;
times[string("thousand")] = 1000;
times[string("million")] = 1000000;
}
void Work()
{
int size = number.size();
int i,temp,result;
for(i = 0,temp = 0,result = 0;i < size;i++)
{
if(times.find(number[i]) != times.end())
{
temp *= times[number[i]];
if(number[i] == "million" || number[i] == "thousand")
{
result += temp;
temp = 0;
}
}
else
{
temp += str2int[number[i]];
}
}
result += temp;
printf("%d/n",result);
}
int main(int argc, char* argv[])
{
Init();
int count;
scanf("%d",&count);
getchar();
while(count >= 1)
{
Input();
Work();
count--;
}
return 0;
}
相关文章推荐
- JD_Source Code for problem 1581
- JD_Source Code for problem 1379
- JD_Source Code for problem 1259
- BD_source code for problem 1555
- test Source Code plugin for SyntaxHighlighter
- there is no source code available for the current location的解决方法
- no rule to process file 'xxx/.../jquery.js' of type sourcecode.javascript for architecture i386
- Educational Codeforces Round 46 (Rated for Div. 2) D. Yet Another Problem On a Subsequence
- Ajax.net source code is available for download
- Line 38: No source code is available for type XXX; did you forget to inherit a required module?
- Atlas Control Toolkit and Source Code for the Build-in Asp.Net 2.0 Providers
- IDEA查看源码时提示:Library source does not match the bytecode for class的问题分析
- there is no source code available for the current location 解决方案
- There is no source code available for the current location
- At least one valid code-source or import-shared-library element is required for shared-library "global.libraries" in /embedded-
- The VC++6.0 C++ source code for playing wave file
- Source Code for List Class Definition
- THE FASTEST C++ IMPLEMENTATION FOR ORIGINAL DPM — SOURCE CODE DOWNLOAD - BUG Fixed
- type sourcecode.glsl for architecture i386问题解决方法
- Native Client (NaCl) is an open-source technology for running native compiled code in the browser