问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

求算法设计与分析的小程序

发布网友 发布时间:2022-05-06 04:26

我来回答

1个回答

热心网友 时间:2022-06-28 17:41

visual studio下的工程,所以有个预编译头stdafx,然后没考虑异常。。
stdafx应该是去掉就可以吧,我不太清楚,反正这个根据vc++的情况稍作改动就可以了,其他算法之类是不受影响的
---------------------------------------------------------
输入两个数,当中要有一个空格。不过C/C++实在写的太少,貌似读入那里写的太麻烦了。。但是又不知道一般会怎么写。。然后,异常依旧未考虑。。

#include "stdafx.h"
#include "stdio.h"

double result = 10e250;
int *plusPositions;
int plusCount;

double atod(int *digits, int length)
{
double number = 0;
for (int i = 0; i < length; ++i) {
number = number * 10 + digits[i];
}
return number;
}

void solve(int *digits, int length, int index, double currentSum,
int plusesRemain, int *tempPlusPositions)
{
if (plusesRemain == 0) {
double tempResult = currentSum + atod(digits, length);
if (tempResult < result) {
memcpy(plusPositions, tempPlusPositions, sizeof(int) * plusCount);
result = tempResult;
}
} else {
for (int i = 1; i < length - plusesRemain + 1; ++i) {
tempPlusPositions[plusesRemain - 1] = index + i;
solve(digits + i, length - i, index + i,
currentSum + atod(digits, i), plusesRemain - 1,
tempPlusPositions);
}
}
}

inline void printResult(int *digits, int length)
{
int digitIndex = 0, plusIndex;
for (plusIndex = plusCount - 1; plusIndex >= 0; --plusIndex) {
for ( ; digitIndex < plusPositions[plusIndex]; ++digitIndex) {
printf("%d", digits[digitIndex]);
}
printf(" + ");
}
for ( ; digitIndex < length; ++digitIndex) {
printf("%d", digits[digitIndex]);
}
printf(" = %d\n", (int) result);
}

void solve(int *digits, int length, int pluses)
{
plusCount = pluses;
plusPositions = new int[pluses];
int *tempPlusPositions = new int[pluses];
solve(digits, length, 0, 0, pluses, tempPlusPositions);
printResult(digits, length);
delete [] tempPlusPositions;
delete [] plusPositions;
}

int _tmain(int argc, _TCHAR* argv[])
{
char string[200];
int digits[200], plus;
scanf("%s %d", &string, &plus);
int i;
char c;
for (i = 0; i < 200; ++i) {
c = string[i];
if (c == '\0')
break;
digits[i] = c - '0';
}
solve(digits, i, plus);

return 0;
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
小鹏交付怎么评分 2024年5月趋乾黄道吉日 2024年5月哪天适合趋乾 2024年6月词讼黄道吉日 2024年6月哪天适合词讼 2024年8月成服黄道吉日 2024年8月哪天适合成服 2024年8月26日黄道吉日 百度识图在线识别这个人是 百度怎样识别明星是谁? 海绵城市都建什么 包钢股票前景如何 600010包钢股份这支股票我现在被套百分之六了,后市该怎么操作,适合做长 ... c编程,一个算法小程序,求二进制位只有3位为1的情况,并输出 如何编数学算法小程序 小程序最远距离算法 你好我单位已交员工3年社保一直没办医保卡,请问现在办理医保卡所需的材料和流程 只有社保卡没有医保卡怎么办 社保卡没有办理好,需要住院可以使用医保吗? 社保卡未办理好怎么交保险 男朋友过生日送啥礼物合适了 远程大号角,大海怪哪家公共广播厂家的音质好。 海之号角炸弹岛如何打巨型席皮德 骑马与砍杀:光明与黑暗—星辰号角的指令在哪儿宿营图片解答 开了个勇气号角,这玩意有什么用么 加百利商店有精灵之号角的设计图吗? 让我图片看看 古代的号角是做什么的 古代战争时吹的号角图片有人有吗 画英雄可是老师要说话英雄这该怎么画呢我们忘了能查查百度或英雄吗... 我开了亲情白条,却没有60立减劵,什么情况? 关于大自然的名言有什么? 亲情白条怎么开通 关于赞美大自然的名句? 算法代码 弄点小程序, 经济新常态下大学生创业要把握哪些新思路 求一个小程序算法-- 组合问题的 大学生毕业创业都有哪些建议??? 这几个小程序 用JAVA如何编写(关于数组与算法) 有什么在算法五百到一千的小程序 联系实际论述大学生如何响应大众创业万众创新的号召,积极投入到创新创业中去 用一种算法实现排序~~小程序求助,在线等答案 求一个用java编写的可逆的加密算法程序,自己写的小程序也行。 英语专业学生毕业之后可以通过那些方式自主创业? 数据库oracle 10g的dmp文件导入oracle 11g为何出错? 新兴科技园区有两幢办公大楼,每幢21层,除底层外,每层有25家公司,两幢办公大楼共有多少家公司? 大学生创业政策实施问题的制度原因是什么 在西安人多的地方,想做一个知道人少创新创意的创业新思路,投资低的大学生创业,大学家庭比较贫困缺钱, 梦见自己输液遇见前妻跟孩子 c开头和k开头那个是正品科曼壁挂炉 科曼壁挂炉经常出现故障E9? 科曼壁挂炉怎么样 壁挂炉十大品牌是什么如题 谢谢了 壁挂炉行业的&quot;李鬼&quot;企业有那些???