`
阿尔萨斯
  • 浏览: 4179607 次
社区版块
存档分类
最新评论

uva 12105 - Bigger is Better(dp)

 
阅读更多

题目链接:uva 12105 - Bigger is Better


题目大意:有n根火柴,要组成一个数字能够整除m,并且最大。


解题思路:dp[i][j]表示用了i个火柴,组成的数字模掉m余j的情况,只不过状态保留的是字符串。


#include <cstdio>
#include <cstring>
#include <string>
#include <iostream>

using namespace std;
const int N = 105;
const int M = 3005;
const int need[N] = {6, 2, 5, 5, 4, 5, 6, 3, 7, 6};

int n, m;
char dp[N][M][55];

bool cmp(char* a, char* b) {
	int la = strlen(a);
	int lb = strlen(b);
	if (la != lb)
		return la < lb;
	return strcmp(a, b) < 0;
}

void solve (char* a, char* b, int k) {
	char tmp[55];
	memset(tmp, 0, sizeof(tmp));
	strcpy(tmp, b);

	int len = strlen(tmp);
	if (tmp[0] == '0')
		tmp[0] = '0' + k;
	else
		tmp[len] = '0' + k;

	if (cmp(a, tmp))
		strcpy(a, tmp);
}

int main () {
	int cas = 1;
	while (scanf("%d", &n) == 1 && n) {
		scanf("%d", &m);

		char ans[55];
		memset(ans, 0, sizeof(ans));
		memset(dp, 0, sizeof(dp));

		dp[0][0][0] = '0';
		for (int i = 0; i <= n; i++) {
			for (int j = 0; j <= m; j++) {
				if (strlen(dp[i][j]) == 0)
					continue;

				for (int k = 0; k < 10; k++) {
					if (i + need[k] > n) 
						continue;

					int t = (j*10 + k)%m;
					solve(dp[i+need[k]][t], dp[i][j], k);
				}
			}
			if (i && cmp(ans, dp[i][0]))
				memcpy(ans, dp[i][0], sizeof(dp[i][0]));
		}

		printf("Case %d: ", cas++);
		if (ans[0] == '\0')
			printf("-1\n");
		else
			printf("%s\n", ans);
	}
	return 0;
}


分享到:
评论

相关推荐

    Python-FlaskBiggerFlask大型应用骨架

    Flask-Bigger - Flask大型应用骨架

    gitit-bigger:Gitit Bigger:超好的个人,团队Wiki文档方案(Git,Markdown,Bootstrap,Ace,Docker)

    吉蒂特·比格(Gitit Bigger) Gitit Bigger:基于Git和Markdown的Wiki,Bootstrap,ace编辑器,语法突出显示和docker部署支持。基于Git和Markdown的超棒的Wiki系统,Bootstrap,Ace编辑器等增强,支持Docker部署。...

    high-bigger-codes:工作中一些原创的、逼格略高、可复用的代码片段

    high-bigger-codes 工作中一些原创的、逼格略高、可复用的代码片段

    build-it-bigger:Build-it-bigger是Udacity Nanodegree Android Developer的一个不错的项目,涉及使用Gradle,Java和Android库,Google Cloud Endpoints

    适用于Android和Java Final Project的Gradle 在此项目中,您将创建一个具有多种风格的应用程序,该应用程序使用多个库和Google Could Endpoints。 完成的应用程序将包含四个模块。 一个提供笑话的Java库,一个为...

    Build-it-Bigger

    适用于Android和Java Final Project的Gradle 在此项目中,您将创建具有多种风格的应用程序,该应用程序使用多个库和Google Cloud Endpoints。 完成的应用程序将包含四个模块。 提供笑话的Java库,为这些笑话提供...

    My Botnet is Bigger than Yours (Maybe, Better than Yours) :why size estimates remain challenging

    The root cause for this confusion is that the term botnet size is currently poorly defined. We elucidate this issue by presenting different metrics for counting botnet membership and show that they ...

    fxos-addon-messages-bigger-send-button

    fxos-addon-messages-更大的发送按钮在Firefox OS上使用“消息”应用程序时,我有些烦恼。 该插件执行以下操作: 发送和附件按钮稍大-因为每次我尝试点击它们中的任何一个时,我都错过了,导致输入字段失去焦点并...

    nd-build-it-bigger

    适用于Android和Java Final Project的Gradle 在此项目中,您将创建一个具有多种风格的应用程序,该应用程序使用多个库和Google Could Endpoints。 完成的应用程序将包含四个模块。 一个提供笑话的Java库,一个为...

    Build-It-Bigger

    适用于Android和Java Final Project的Gradle 在此项目中,您将创建具有多种风格的应用程序,该应用程序使用多个库和Google Cloud Endpoints。 完成的应用程序将包含四个模块。 一个提供笑话的Java库,一个为这些笑话...

    Numbers-Getting-Bigger

    Tuts +系列:数字越来越大授课教师:Alexander King 增量游戏引人入胜和困惑。 以最少的玩家代理和闲置时间为标志,它们似乎无视关于良好游戏设计的传统逻辑,尽管如此,它们却吸引了广大的玩家群体。...

    Final-Build-Bigger

    适用于Android和Java Final Project的Gradle 在此项目中,您将创建具有多种风格的应用程序,该应用程序使用多个库和Google Cloud Endpoints。 完成的应用程序将包含四个模块。 提供笑话的Java库,为这些笑话提供服务...

    Build-It-Bigger-Gradle-Jokes:安卓

    建立更大的Gradle笑话创建了具有多种口味的应用程序,该应用程序使用了多个库和Google Could Endpoints。 完成的应用程序将包含四个模块。 一个提供笑话的Java库,一个为这些笑话服务的Google Could Endpoints(GCE...

    udacity-and-p3-build-it-bigger:Udacity项目

    Udacity项目:构建更大的项目 适用于Android和Java Final Project的Gradle 在此项目中,您将创建具有多种风格的应用程序,该应用程序使用多个库和Google Cloud Endpoints。 完成的应用程序将包含四个模块。...

    Build-It-Bigger:项目4-Android Nanodegree

    项目4:Java,Android库。 Google端点 适用于Android和Java Final Project的Gradle 在此项目中,您将创建一个具有多种风格的应用程序,该应用程序使用多个库和Google Could Endpoints。 完成的应用程序将包含四个...

    Build-It-Bigger:Udacity,Android开发纳米学位,项目4

    Build it Bigger项目的简短介绍 这是Udacity和Google的Android Developer Nanodegree程序中的第四个项目。 该应用程序通过单击按钮即可向用户发送随机有趣的笑话。 为了接收笑话,该应用程序异步连接到GCE服务器,该...

    build-it-bigger:Udacity Android Nanodegree

    #Build It更大的Udacity Android Nanodegree:Project 4 ##项目介绍: 适用于Android和Java Final Project的Gradle 在此项目中,您将创建一个具有多种风格的应用程序,该应用程序使用多个库和Google Could ...

    android-nanodegree-builder-it-bigger:android nanodegree的项目4

    适用于Android和Java Final Project的Gradle 在此项目中,您将创建一个具有多种风格的应用程序,该应用程序使用多个库和Google Could Endpoints。 完成的应用程序将包含四个模块。 一个提供笑话的Java库,一个为...

    Udacity-Build-It-Bigger:Udacity Google Developer Nanodegree项目

    Udacity-热门电影Udacity Google Developer Nanodegree项目您应该将app/src/main/java/com/udacity/gradle/builditbigger/EndpointsAsyncTask.java中的192.168.1.12更改为计算机的IP地址。 如果要在模拟器中启动应用...

Global site tag (gtag.js) - Google Analytics