poj 1472(递归模拟)
题意:就是让你求出时间复杂度。
分析:由于指数最多为10次方,所以可以想到用一个数组保存各个指数的系数,具体看代码实现吧!
代码实现:
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std; char str[][];
char key[];
int num; struct node{
int sum[];
void init()
{
memset(sum,,sizeof(sum));
}
}; void init()//把字符串提取出来
{
int i,t=,num=;
scanf("%s",key);
while(t)
{
scanf("%s",key);
strcpy(str[num++],key);
if(key[]=='E')
t--;
else if(key[]=='L')
t++;
}
} struct node xiangcheng(struct node a,struct node b)//相乘
{
int i,j;
struct node res;
res.init();
for(i=;i<=;i++)
for(j=;j<=;j++)
res.sum[i+j]=res.sum[i+j]+a.sum[i]*b.sum[j];
return res;
} struct node add(struct node a,struct node b)//相加
{
int i;
for(i=;i<=;i++)
a.sum[i]+=b.sum[i];
return a;
} struct node dfs()
{
int i=;
struct node a;
a.init();
while()//碰到END才结束
{
i=;
if(str[num][]=='L')
{
num=num+;
struct node b;
b.init();
if(str[num][]=='n')
b.sum[]++;
else
{
int k=;
i=;
while(str[num][i]!='\0')
{
k=k*+str[num][i]-'';
i++;
}
b.sum[]=b.sum[]+k;
}
num=num+;
b=xiangcheng(b,dfs());
a=add(a,b);
} else if(str[num][]=='O')
{
num=num+;
if(str[num][]=='n')
a.sum[]++;
else
{
int k=;
i=;
while(str[num][i]!='\0')
{
k=k*+str[num][i]-'';
i++;
}
a.sum[]=a.sum[]+k;
}
} else if(str[num][]=='E')
return a;
num++;
}
} int main()
{
int T;
int i,j,flag;
struct node a;
scanf("%d",&T);
getchar();
for(j=;j<=T;j++)
{
num=;
init();
a=dfs();
printf("Program #%d\nRuntime = ",j);
i=;flag=;
while(a.sum[i]==) i--;
for(;i>;i--)
{
if(a.sum[i]==)
continue;
if(flag==)
{
if(a.sum[i]>)
printf("%d*",a.sum[i]);
printf("n^%d",i);
flag++;
}
else
{
printf("+");
if(a.sum[i]>)
printf("%d*",a.sum[i]);
printf("n^%d",i);
}
}
if(a.sum[])
{
if(flag)
printf("+");
if(a.sum[]>)
printf("%d*",a.sum[]);
printf("n");
flag++;
}
if(a.sum[])
{
if(flag)
printf("+");
printf("%d",a.sum[]);
flag++;
}
if(flag==)
printf("");
printf("\n\n");
}
return ;
}
poj 1472(递归模拟)的更多相关文章
- POJ 1472:Instant Complexity 模拟时间复杂度
Instant Complexity Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 1908 Accepted: 658 ...
- POJ 1472 Instant Complexity 应该叫它编程题。。
题目:http://poj.org/problem?id=1472 这个题目是分到“模拟题”一类的,我觉得模拟的成分比较少,主要考察编程能力.独立写完这个题特别兴奋...所以我必须好好说一说,独家哦. ...
- poj 3077Rounders(模拟)
转载请注明出处:viewmode=contents">http://blog.csdn.net/u012860063? viewmode=contents 题目链接:http://po ...
- POJ 1068 Parencodings 模拟 难度:0
http://poj.org/problem?id=1068 #include<cstdio> #include <cstring> using namespace std; ...
- POJ 1036 Rails 模拟堆栈
水题,主要是思路清晰,判断明确. 记x为A站最前方的车,y表示下一列要进入B站的车厢,初识时,x=1;y=a1;C=[]; 在调度过程中: if(y==0)那么调度成功,退出模拟过程:否则 if(x= ...
- POJ 1001 Exponentiation 模拟小数幂
模拟小数幂 小数点位 pos 非零末位 e 长度 len 只有三种情况 pos > len pos < e e < pos < len #include <iostrea ...
- POJ 1008 简单模拟题
e.... 虽然这是一道灰常简单的模拟题.但是米做的时候没有读懂第二个日历的计时方法.然后捏.敲完之后华丽的WA了进一个点.坑点就在一年的最后一天你是该输出本年的.e ...但是我好想并没有..看di ...
- Crashing Robots POJ 2632 简单模拟
Description In a modernized warehouse, robots are used to fetch the goods. Careful planning is neede ...
- P3719 [AHOI2017初中组]rexp——递归模拟
P3719 [AHOI2017初中组]rexp 没有什么算法的题做起来真不适应,这道题深深讽刺了我想用栈维护匹配括号个数的想法: 递归解决就行了: 时刻注意函数返回值是什么,边界条件是什么: #inc ...
随机推荐
- Hadoop 在windows 上伪分布式的安装过程
第一部分:Hadoop 在windows 上伪分布式的安装过程 安装JDK 1.下载JDK http://www.oracle.com/technetwork/java/javaee/d ...
- Linux进程间通信(IPC)
序言 linux下的进程通信手段基本上是从Unix平台上的进程通信手段继承而来的. 而对Unix发展做出重大贡献的两大主力AT&T的贝尔实验室及BSD(加州大学伯克利分校的伯克利软件发布中心) ...
- 在linux/unix中查找大文件
在linux/unix中查找大文件,如查找大于100M文件的位置路径,查找等于10M文件的位置路径等等,下面就介绍几个实现快速查找的命令: 1. 查找指定目录下所有大于100M的文件,命令为 find ...
- [iOS]URL编码和解码
1. 首先来看下什么样的是URL编码(字符串中带有%22 类似这样的) NSString *str = @"http://m.tuniu.com/api/home/data/index/c/ ...
- C语言:指针的几种形式二
一.const指针 1.const int* p和int const* p:两者意义是相同的.指向的内容是只读数据,不可以q改变:但是指向的地址可以改变. 2.int* const p:必须先对指针初 ...
- POJ3267——The Cow Lexicon(动态规划)
The Cow Lexicon DescriptionFew know that the cows have their own dictionary with W (1 ≤ W ≤ 600) wor ...
- JSP相对路径与绝对路径探秘
浏览器端 带杠的 一开始浏览器的地址http://localhost:8080/example/index.jsp 如果写成 <a href="/servlet/TestDBSvl&q ...
- sublime使用
显示侧板的文件夹: View -> Side Bar 菜单[project]->add folder to project.把文件夹显示在左边的sidebar上. 安装插件: packa ...
- python中的列表(list) 切片详解
1.切片: 通过指定下标的方式来获得某一个数据元素,或者通过指定下标范围来获得一组序列的元素,这种访问序列的方式叫做切片. 访问某一个数据元素的的语法如下: sequence[index] ...
- Android模拟器分辨率介绍
转自: http://www.cnblogs.com/xrtd/p/3746935.html 本人喜欢用 HVGA(320x480) Skins:HVGA.HVGA-L.HVGA-P.QVGA-L. ...