码迷,mamicode.com
首页 > 其他好文 > 详细

编程算法 - 最好牛线(Best Cow Line) 代码(C)

时间:2014-07-17 20:28:41      阅读:225      评论:0      收藏:0      [点我收藏+]

标签:mystra   编程算法   best cow line   贪心法   c   

最好牛线(Best Cow Line) 代码(C)


本文地址: http://blog.csdn.net/caroline_wendy


题目: 给定长度为N的字符串S, 要构造一个长度为N的字符串T. 反复进行如下任意操作.

从S的头部删除一个字符, 放入T的尾部;

从S的尾部删除一个字符, 放入T的尾部;

目标是要构造字典序尽可能小的字符串T.


使用贪心算法, 不断选取S首尾最小的字符, 放入T, 如果相等, 则再次向内查找, 找到内部最小的.


代码:

/*
 * main.cpp
 *
 *  Created on: 2014.7.17
 *      Author: spike
 */

/*eclipse cdt, gcc 4.8.1*/

#include <stdio.h>
#include <limits.h>

#include <utility>
#include <queue>
#include <algorithm>

using namespace std;

class Program {
	static const int MAX_N = 10000;
	int N = 6;
	char S[MAX_N+1] = "ACDBCB";
public:
	void solve() {
		int a=0, b=N-1;
		while (a<=b) {
			bool left = false;
			for (int i=0; a+i<=b; i++) { //向内查找
				if(S[a+i] < S[b-i]) {
					left = true;
					break;
				} else if (S[a+i] > S[b-i]) {
					left = false;
					break;
				}
			}

			if (left) putchar(S[a++]);
			else putchar(S[b--]);
		}
		putchar(‘\n‘);
	}
};


int main(void)
{
	Program P;
	P.solve();
    return 0;
}




输出:

ABCBCD



bubuko.com,布布扣






编程算法 - 最好牛线(Best Cow Line) 代码(C),布布扣,bubuko.com

编程算法 - 最好牛线(Best Cow Line) 代码(C)

标签:mystra   编程算法   best cow line   贪心法   c   

原文地址:http://blog.csdn.net/caroline_wendy/article/details/37909933

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!