博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[贪心] COJ 1236 删数游戏
阅读量:5072 次
发布时间:2019-06-12

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

每次查找第一个降序的首字符,如果不存在就删除结尾字符,链表,O(n)。

# include 
# include
using namespace std;struct node{ char ch; node *pre, *next;};void b(node *head, char *s){ head->ch = s[0]; node *tmp = head; for (int i = 0; s[i]; ++i) { node *cur = new node; cur->ch = s[i+1]; tmp->next = cur; cur->pre = tmp; cur->next = NULL; tmp = cur; }}node* d(node *head, int n){ node *tmp = head; while (n) { if ((tmp->ch) > (tmp->next->ch)) { --n; if (tmp == head) { head = head->next; head->pre = NULL; delete tmp; tmp = head; } else { node *cur = tmp->pre; tmp->pre->next = tmp->next; tmp->next->pre = tmp->pre; delete tmp; tmp = cur; } } else tmp = tmp->next; } return head;}void p(node *head){ node *cur = head; while (cur->ch == '0') cur = cur->next; if (cur->ch == '\0') puts("0"); else { while (cur->ch != '\0') { putchar(cur->ch); cur = cur->next; } putchar('\n'); }}void k(node *p){ if (p->next) { k(p->next); delete p; }}int ss;char nn[2005];void solve(void){ node *head = new node; head->pre = NULL; head->next = NULL; b(head, nn); head = d(head, ss); p(head); k(head);}int main(){ while (~scanf("%s%d", nn, &ss)) solve(); return 0;}

 

转载于:https://www.cnblogs.com/JMDWQ/archive/2012/08/13/2636620.html

你可能感兴趣的文章
怎样从Java转换到Kotlin代码:现在就开始使用Kotlin(KAD 29)
查看>>
Java 执行CMD/DOS
查看>>
oracle容器化docker解决方案
查看>>
基于SOA分布式架构的dubbo框架基础学习篇
查看>>
关于链表的一个小程序
查看>>
java多线程--线程池的使用
查看>>
EL简介
查看>>
Redis虚拟内存介绍
查看>>
1326. Bottle Taps
查看>>
关于DataTable的两篇基础文章
查看>>
广告系统
查看>>
批量去除Teleport Pro整站下载文件冗余代码
查看>>
VS代码生成工具ReSharper使用手册:配置快捷键(转)
查看>>
Vue - 自定义事件
查看>>
Hibernate 参数设置一览表
查看>>
在centos7下安装.net core
查看>>
Oracle基本操作
查看>>
PLSQL导出对象的表结构和表数据
查看>>
iOS - UIRefreshControl
查看>>
PHPExcel常用方法小结
查看>>