较为早期的CTSC,难度非常低,直接模拟就行了。没有什么可以说的

#include <iostream>
#include <cstdlib>
#include <string>
#include <cstring>using namespace std;const int maxn = 25;
const int maxy = 1000;const int success = 0;
const int broke = 1;class CPolygon
{
private:int s[maxn];int signal;
public:CPolygon();void init();void multInt(int n);void multN();void setToN(int n);void setToDef();void setSig(int n);void add(CPolygon n);int getSig();friend ostream & operator<<(ostream & os,CPolygon polygon);
};string a[maxy];CPolygon::CPolygon()
{memset(s,0,sizeof s);signal = success;
}void CPolygon::init()
{memset(s,0,sizeof s);signal = success;
}void CPolygon::multInt(int n)
{for (int i = 0;i < maxn;++i) s[i] *= n;
}void CPolygon::multN()
{CPolygon temp;for (int i = 0;i < maxn-1;++i) temp.s[i+1] = s[i];for (int i = 0;i < maxn;++i) s[i] = temp.s[i];
}void CPolygon::add(CPolygon n)
{for (int i = 0;i < maxn;++i) s[i] += n.s[i];
}int CPolygon::getSig()
{return signal;
}void CPolygon::setToN(int n)
{s[0] = n;
}void CPolygon::setToDef()
{s[1] = 1;
}void CPolygon::setSig(int n)
{signal = n;
}CPolygon analysis(int l,int r,int dep)
{CPolygon ans;CPolygon temp;int i = l;int j;while (i <= r){if (a[i] == "loop"){j = i;int countEnd = 1;i++;while (countEnd > 0){if (a[i] == "loop") countEnd++;if (a[i] == "end") countEnd--;i++;}temp = analysis(j+2, i-1,dep+1);if (temp.getSig() == broke) ans.add(temp);else{if (a[j+1] == "n"){temp.multN();ans.add(temp);}else{if (a[j+1] != "0") temp.multInt(atoi(a[j+1].c_str())); else temp.multN();ans.add(temp);}}temp.init();}else if (a[i] == "op"){if (a[i+1] != "n"){temp.setToN(atoi(a[i+1].c_str()));}else temp.setToDef();ans.add(temp);i += 2;temp.init();}else if (a[i] == "break"){if (dep != 0){ans.setSig(broke);return ans;}i++;}else if (a[i] == "continue"){if (dep != 0){return ans;}i++;}else i++;}return ans;
}ostream & operator<<(ostream & os,CPolygon polygon)
{int first = -1;for (int i = maxn-1;i >= 0;--i){if (polygon.s[i] != 0 && first == -1) first = i;}if (first == -1){os << "0";return os;}for (int i = maxn-1;i >= 0;--i){if (polygon.s[i] == 0) continue;if (i != first && polygon.s[i] > 0) os <<"+";if (polygon.s[i] > 1 || polygon.s[i] < -1) os << polygon.s[i];if (polygon.s[i] == 1 && i == 0) os << "1";if (polygon.s[i] == -1 && i != 0) os << "-";if (polygon.s[i] == -1 && i == 0) os <<"-1";if (i != 0 && i != 1) os <<"n^" << i; else if (i != 0) os << "n";}return os;
}int main(int argc, const char * argv[])
{int c = 0;while (cin >> a[c]) c++;cout << analysis(0, c-1, 0) << endl;return 0;return 0;
}

算法复杂度(CTSC)相关推荐

  1. 20162311 算法复杂度-3

    算法复杂度-3 题目要求 实现情况 求一个整数二维数组Arr[N][N]的所有元素之和 我自己写了一个getSum的方法 算法的时间复杂度为O(n^2) 对于输入的任意 3 个整数, 将它们按从小到大 ...

  2. PHP复杂度,php 算法复杂度 时间复杂度 空间复杂度

    算法复杂度分为时间复杂度和空间复杂度. 其作用: 时间复杂度是指执行算法所需要的计算工作量: 而空间复杂度是指执行这个算法所需要的内存空间. (算法的复杂性体现在运行该算法时的计算机所需资源的多少上, ...

  3. .NET平台BigO算法复杂度备忘

    之前一篇文章提到BIG O算法复杂度的备忘录, 今天这个是.NET 平台下集合类相关的Big O 算法复杂度 今天先到这儿,希望对您有参考作用, 您可能感兴趣的文章: 数据结构与算法 Big O 备忘 ...

  4. O(n)级选排名第k位数(附上算法复杂度分析)

    算法简述 如果想要拿到第k位,一般说复杂度都比较高.例如,用快排等方式,要用了O(nlogn)水平的时间复杂度.就算是用快排改进,每次在快排的基础上,只排剩下的一部分,在平均水平上,也会变成了O(nl ...

  5. “算法复杂度”——其实并没有那么复杂

    算法是用于解决特定问题的一系列的执行步骤.使用不同算法,解决同一个问题,效率可能相差非常大.为了对算法的好坏进行评价,我们引入 "算法复杂度" 的概念. 1.引例:斐波那契数列(F ...

  6. 二分检索用途及复杂性_二分查找和三分查找哪个快?算法复杂度与常数无关?复杂度分析的常见误区...

    还记得两三年前,我初看一本算法书,看到二分查找算法的复杂度时,我发现了了不得的东西:二分查找每次查询范围减少一半,需要查询的次数是 ,它的复杂度是 . 我把它改成三分查找,每次查询两个数字与我的目标数 ...

  7. 算法复杂度分析(下)

    前一篇文章算法复杂度分析(上)讲述了复杂度的大 O 表示法和几个分析原则,这篇文章我们来讲讲另外几种复杂度,最好情况时间复杂度(best case time complexity).最坏情况时间复杂度 ...

  8. 排序代码(python,c++) 及 基本算法复杂度

    0.导语 本节为手撕代码系列之第一弹,主要来手撕排序算法,主要包括以下几大排序算法: 直接插入排序 冒泡排序 选择排序 快速排序 希尔排序 堆排序 归并排序 1.直接插入排序 [算法思想] 每一步将一 ...

  9. 老王带你理解算法复杂度O(1),O(N),O(N^2)

    上图对应的是算法复杂度的图片,X轴对应的是n(问题规模),Y轴对应的是执行的运行时间. 我们先从简单的复杂度解读O(1) 从上面的图片我们可以看到O(1)的复杂度是恒定的,一点波澜都没有,什么是O(1 ...

  10. 八大排序:Java实现八大排序及算法复杂度分析

    目录 QUESTION:八大排序:Java实现八大排序及算法复杂度分析 ANSWER: 一:冒泡排序 1.算法分析 2.时间复杂度分析 3.代码 二:选择排序 1.算法分析 2.时间复杂度分析 3.代 ...

最新文章

  1. Linux全攻略--MySQL数据库配置与管理
  2. ai怎样导出所选部分_Adobe Photoshop批量导出照片+模糊照片变清晰+火焰字体制作介绍...
  3. 226. Invert Binary Tree
  4. android常见面试问题
  5. [渝粤题库]陕西师范大学《幼儿园科学教育》作业
  6. python 获取网页表格数据_python实战4获取tushare数据
  7. 「前端」看懂前端脚手架你需要这篇webpack
  8. Android中图片去色的两种方法
  9. 新中大财务软件服务器路径修改,新中大软件最常用的操作手册
  10. 优思学院|FMEA 写不好?原因竟然是...
  11. 在linux中加固mysql_linux安全加固十六法则
  12. Jenkins教程(八)实现 GitLab 触发 Jenkins 自动按模块发布前端
  13. 2022-强烈推荐的7款浏览器插件
  14. 常用的机器学习与深度学习算法简介
  15. BP神经网络代码实现
  16. [渝粤题库]西北工业大学刑法
  17. 计算机绘图如何设置精度2007,excel2007饼图百分比精确度如何设置
  18. java实现pdf电子合同设置合同编号
  19. js实现拼图游戏(数字版本与图片版本)
  20. java 调用麦克风录音_Java 实现麦克风自动录音

热门文章

  1. java用密码连接路由器_无线路由器与交换机配合使用,图解
  2. Office 2010 excel在打开两个表格的时候,只能在一个窗口显示,怎么分开来看?
  3. TeXstudio配置
  4. 游戏开发需要具备哪些技术_小程序商城开发具备哪些功能?
  5. onresize事件
  6. 如何在Linux中安装nasm最新版本
  7. 猴子吃桃c语言程序到第n天,C语言猴子吃桃问题
  8. 做外贸五年了,为什么这么失败呢?
  9. SpringBoot图片保存与读取
  10. Civil service posts-