题目:http://poj.org/problem?id=1472

  这个题目是分到“模拟题”一类的,我觉得模拟的成分比较少,主要考察编程能力。独立写完这个题特别兴奋。。。所以我必须好好说一说,独家哦。。。

  题意是计算一段伪代码的时间复杂度,整体代码夹在“BEGIN”和“END”之间,中间有很多循环语句,夹在“LOOP X”和“END”之间,表示循环X次。第一眼一看很难下手,其实只要想到一点这个题就非常水了:

  “BEGIN”语句可以看做”LOOP 1“。

  这样的话整个程序的递归结构就明显了,就是LOOP调用LOOP,直接写个LOOP函数就是了。。

  不过这个题除去恶心到死的输出格式,还是有值得注意的地方的,比如递归过程中申请的临时空间是不方便传回的,而且函数结束后这些空间没法free掉,所以我们需要先申请空间,然后传入下一次递归,这样等下一次递归结束以后方便我们free掉,不然工程编码时就造成内存泄露了,不过对于ACM来说无所谓了。。。

  最后说一下输出格式,系数大于一才输出系数,指数大于1才输出指数,要注意认真处理系数和指数是1和0的时候。还有注意输出0的情况,因为这个错了好久。

  第一次写这么多题解。。最后是代码:

  

 #include <stdio.h>
#include <string.h>
#include <stdlib.h> //循环lpNum次,结果存入ans
void loop(int *ans, char *lpNum)
{
char s[], loopNum[] = {};
while(scanf("%s", s) && s[] != 'E')
{
if(s[] == 'L')
{
//注意先申请tmp数组再递归,不要在递归的时候申请
//最好动态申请,便于释放,其他地方也是
//int tmp[11] = {0};
int *tmp = new int[];
memset(tmp, , *sizeof(int)); scanf("%s", loopNum);
loop(tmp, loopNum);
for(int i = ; i <= ; i++)
ans[i] += tmp[i]; //调用结束后释放,最近在学习写工程。。
//delete tmp;
}
else if(s[] == 'O')
{
int x;
scanf("%d", &x);
ans[] += x;
}
}
if(lpNum[] == 'n')
{
for(int i = ; i > ; i--)
ans[i] = ans[i-];
ans[] = ;
}
else
{
int x = atoi(lpNum);
for(int i = ; i <= ; i++)
ans[i] *= x;
}
} int main()
{
int t;
int ans[];
scanf("%d", &t);
for(int item = ; item <= t; item++)
{
memset(ans, , sizeof(ans));
scanf("%*s");
loop(ans, ""); //下面全是输出格式,不要看了,眼花。。
printf("Program #%d\nRuntime = ", item);
bool first = ;
for(int i = ; i >= ; i--)
{
if(ans[i] == )continue;
if(i == )printf("%s%d", first ? "" : "+", ans[]);
else if(ans[i] == )
printf("%sn", first ? "" : "+");
else if(ans[i] > )
printf("%s%d*n", first ? "" : "+", ans[i]);
if(i > )printf("^%d", i);
first = ;
}
if(first)printf("");
printf("\n\n");
}
return ;
}

OOOOOO

POJ 1472 Instant Complexity 应该叫它编程题。。的更多相关文章

  1. POJ 1472:Instant Complexity 模拟时间复杂度

    Instant Complexity Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 1908   Accepted: 658 ...

  2. Instant Complexity - POJ1472

    Instant Complexity Time Limit: 1000MS Memory Limit: 10000K Description Analyzing the run-time comple ...

  3. POJ C++程序设计 编程题#1 编程作业—STL1

    编程题#1 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 下面的程序输出结 ...

  4. POJ C++程序设计 编程题#4 字符串操作

    编程题#4: 字符串操作 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 给 ...

  5. POJ C++程序设计 编程题#3 编程作业—文件操作与模板

    编程题#3: 整数的输出格式 来源: POJ(Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 1000kB 描述 利 ...

  6. POJ C++程序设计 编程题#2 编程作业—文件操作与模板

    编程题#2: 实数的输出格式 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 1000kB 描述 ...

  7. POJ C++程序设计 编程题#1 编程作业—文件操作与模板

    编程题#1 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 实现一个三维数组 ...

  8. POJ C++程序设计 编程题#3 编程作业—多态与虚函数

    编程题 #3 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 下面的程序输出 ...

  9. POJ C++程序设计 编程题#2 编程作业—多态与虚函数

    编程题#2 来源: POJ(Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 下面程序的输出结果 ...

随机推荐

  1. cocos2dx shader

    http://www.oschina.net/question/565065_79818 Cocos2d-x 2.0 -- 从 点,线,面学起 http://blog.csdn.net/dawn_mo ...

  2. find——文件查找命令 linux一些常用命令

    find 命令eg: 一般文件查找方法: 1.  find /home -name file  ,  在/home目录下查找文件名为file的文件2.  find /home -name '*file ...

  3. 不支持的关键字:“provider connection string”报错信息及解决方案

    今天在部署公司开发框架的时候 ,登录系统之后调用代办列表的时候就报错了 总线调用契约XX.Service.Contracts.IXXService上的GetXXCount方法时出错. Resoluti ...

  4. 有关Color和Drawable你所不知道的那些内容

    Android开发中,我们经常会用到Color或Drawable,有时他们是可以混用的,有时却有严格的区别. Drawable 体系结构 Drawable是可绘制物件的一般抽象.与View不同,Dra ...

  5. RxAndroid结合Retrofit,看看谁才是最佳拍档!

    这篇博文酝酿好久了,今天终于下定决心开始写!RxAndroid和Retrofit都算是当下非常流行的Android开发框架,这两个框架光是单独使用就已经爽歪歪了,那么将RxAndroid和Retrof ...

  6. Android5.0常用颜色属性说明

    在使用Eclipse的时代,我们很少去在style文件给整个应用或者Activity去设定颜色,那是因为即使设置也不会提升用户的视觉效果.但是材料设计号称让没有设计功底的人也能做出漂亮的App,那我们 ...

  7. file is missing from source location:c\temp\batang.ttc

    打开注册表 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink 在右侧找到 Micr ...

  8. SWFObject2.0

    PROBLEM: using % in the height and width(e.g. 100%) with the SWFObject 2.0 (or 2.1) with dynamic pub ...

  9. java 静态方法

    在使用java的时候,你会发现,有些对象,需要new ,有些则不需要时,比如Math类 ); 如果你查看源码就会大致的发现,里面的属性和方法都是静态的: public static double si ...

  10. maven是什么?(转自oracle官网)

    Maven 是一个项目管理和构建自动化工具.但是对于我们程序员来说,我们最关心的是它的项目构建功能.所以这里我们介绍的就是怎样用 maven 来满足我们项目的日常需要.Maven 使用惯例优于配置的原 ...