博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ-1472 Instant Complexity 模拟
阅读量:7111 次
发布时间:2019-06-28

本文共 2064 字,大约阅读时间需要 6 分钟。

相当于表达式计算一般,用递归进行处理,将BEGIN视作是一个LOOP,每次进入LOOP则进行多条语句处理,知道遇到END位置,结束这个LOOP。

代码如下:

#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;struct EXP { int a[11]; EXP () { memset(a, 0, sizeof (a)); } EXP mul(int x) { EXP ret; if (x == -1) { for (int i = 1; i <= 10; ++i) { ret.a[i] = a[i-1]; } } else { for (int i = 0; i <= 10; ++i) { ret.a[i] = x * a[i]; } } return ret; } EXP add(int x) { EXP ret = *this; ret.a[0] += x; return ret; } EXP add(EXP x) { EXP ret = *this; for (int i = 0; i <= 10; ++i) { ret.a[i] += x.a[i]; } return ret; }};EXP cal() { EXP ret; char op[20], num[20]; while (1) { scanf("%s", op); if (!strcmp(op, "LOOP")) { scanf("%s", num); if (num[0] == 'n') { ret = ret.add(cal().mul(-1)); } else { ret = ret.add(cal().mul(atoi(num))); } } else if (!strcmp(op, "OP")) { scanf("%s", num); ret = ret.add(atoi(num)); } else return ret; }}int main(){ int T, ca = 0; char coat[20]; bool first, zero; EXP ret; scanf("%d", &T); while (T--) { first = zero = true; scanf("%s", coat); ret = cal(); printf("Program #%d\n", ++ca); printf("Runtime = "); for (int i = 0; i <= 10; ++i) { if (ret.a[i]) zero = false; } if (zero) { puts("0\n"); continue; } for (int i = 10; i >= 0; --i) { if (ret.a[i]) { if (ret.a[i] == 1) { if (first) { if (i) { if (i == 1) { printf("n"); } else { printf("n^%d", i); } } else { printf("1"); } first = false; } else { if (i) { if (i == 1) { printf("+n"); } else { printf("+n^%d", i); } } else { printf("+1"); } } } else { // ret.a[i] != 1 if (first) { if (i) { if (i == 1) { printf("%d*n", ret.a[i]); } else { printf("%d*n^%d", ret.a[i], i); } } else { printf("%d", ret.a[i]); } first = false; } else { if (i) { if (i == 1) { printf("+%d*n", ret.a[i]); } else { printf("+%d*n^%d", ret.a[i], i); } } else { printf("+%d", ret.a[i]); } } } } } puts("\n"); } return 0;}

转载于:https://www.cnblogs.com/Lyush/archive/2012/09/13/2683898.html

你可能感兴趣的文章
判断一个变量的类型Object.prototype.toString.call
查看>>
linux磁盘空间查询
查看>>
windows中使用Findwindow函数与FindWindowEx函数来实现自动控制、触发第三方软件事件的方法...
查看>>
金额大小写转换(3)
查看>>
浏览器的同源策略和跨域问题
查看>>
SQL SERVER 触发器介绍
查看>>
美国国有企业
查看>>
推送的通知和自定义消息区别
查看>>
c# 解析JSON的几种办法
查看>>
autofs自动挂载
查看>>
JavaWeb学习笔记——过滤器
查看>>
互联网创业原则与创业模式attilax大总结
查看>>
linux无线网络配置_转
查看>>
微信小程序想通过场景化缩短路径
查看>>
手把手教你DIY一个春运迁徙图(一)
查看>>
mysql编码问题
查看>>
Web APi之HttpClient注意事项以及建议
查看>>
Webkit内核探究【2】——css简介
查看>>
[Angular] Ngrx/effects, Action trigger another action
查看>>
原生和jQuery的ajax用法
查看>>