uva11059
除法(Division,uva725)
输入整数n,按从小到大的顺序输出所有形如abcde/fghij=n的表达式,其中a~j恰好为数字0~9的一个排列(可以有前导0),2<=n<=79。
输入:输入若干组数据,以文件结束符结束。
输出:For each test case you must print the message: Case #M: The maximum product is P., where M is the number of the test case, starting from 1, and P is the value of the maximum product. After each test case you must print a blank line.
样例输入:
62
样例输出:
79546/01283=62
94736/01528=62
方法1:利用3重循环枚举起点和终点。
错误程序:
#include<iostream>
#include<cstdio>
using namespace std;
int a[30];
int main(){
int n,m=0;
while (cin>>n){
m++;
long long maxc=0,s;
for(int i=1;i<=n;i++) cin>>a[i];
for (int i=1;i<=n;i++){
for (int j=i+1;j<=n;j++){//程序错误:考虑不全,当单个数为最大值时,(更没有考虑到,当第n个数为最大值的情况),不能出正确结果
s=a[i];
for (int k=i+1;k<=j;k++)s=s*a[k];
if (s>maxc) maxc=s;
}
}
cout<<"Case #"<<m<<": The maximum product is "<<maxc<<"."<<endl<<endl;
}
return 0;
}
修改1:
for (int i=1;i<=n;i++){
for (int j=i;j<=n;j++){
s=a[i];
if (s>maxc) maxc=s;
for (int k=i+1;k<=j;k++)s=s*a[k];
if (s>maxc) maxc=s;
}
}
继续修改:
for (int i=1;i<=n;i++){
for (int j=i;j<=n;j++){
s=1;
for (int k=i;k<=j;k++)s=s*a[k];
if (s>maxc) maxc=s;
}
}
简化:由三重循环修改为二重
for (int i=1;i<=n;i++){
s=1;
for (int j=i;j<=n;j++){
s=s*a[j];//累乘即可
if (s>maxc) maxc=s;
}
}
继续简化:能不能用一维实现
思路,动态规划,模拟加法的最长连续子序列 f[i]=max(f[i-1],a[i]),则有:
因为本题是乘法,需要如果只单纯记录最大值是不妥当的,因为负数的最小值*负数结果也可能最大。所以有:
f[i]=max(max(f[i-1]*a[i],g[i-1]*a[i]),a[i]);
g[i]=min(min(f[i-1]*a[i],g[i-1]*a[i]),a[i]);
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
long long f[30],g[30],a[30];
int main(){
int n,m=0;
while (cin>>n){
m++;
long long maxc=0,s;
for(int i=1;i<=n;i++) cin>>a[i];
memset(f,0,sizeof(f));
memset(g,0,sizeof(g));
for (int i=1;i<=n;i++){
f[i]=max(max(f[i-1]*a[i],g[i-1]*a[i]),a[i]);
g[i]=min(min(f[i-1]*a[i],g[i-1]*a[i]),a[i]);
}
for(int i=1;i<=n;i++)if (maxc<f[i]) maxc=f[i];
cout<<"Case #"<<m<<": The maximum product is "<<maxc<<"."<<endl<<endl;
}
return 0;
}
符:算法竞赛入门经典例题7—2
uva11059的更多相关文章
- uva11059(最大乘积)
Problem D - Maximum Product Time Limit: 1 second Given a sequence of integers S = {S1, S2, ..., Sn}, ...
- UVA11059 - Maximum Product
1.题目名称 Maximum Product 2.题目地址 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemi ...
- 7_2 最大乘积(UVa11059)<枚举连续子序列>
给一个数字集合{ S1,S2,…,Sn },请从这个数字集合里找出一段连续数字,使他们的乘积是最大的.以Case 1为例子,2 x 4 = 8为这个集合的最大乘积:而Case 2则为2 x 5 x(– ...
- 枚举专项练习_Uva725(Division)_Uva11059(Maximun Product)
//Uva725 #include <iostream> #include <cstring> #include <cstdlib> #include <cs ...
随机推荐
- PC-1500与PC通讯
目录 第1章说明 2 第2章音频通讯 3 2.1 下载 3 2.2 上传 8 2.2.1 操作 8 2.2.2 音量 8 2.3 直接将BASIC代码转换为wav文 ...
- VR应用里面的Photogrammetry技术是什么
http://www.manew.com/thread-49556-1-1.html 具体使用 http://www.didayin.com/archives/632 软件下载 http://labs ...
- B2车
晚上10点之后,杭州快速公交B2的司机,把2节车厢,开的像是跑车一样,每次启动都是弹射出去的,好像是在报复白天蜗牛般的速度.真乃是见神杀神,见佛杀佛.
- css读书笔记4:字体和文本
字体属性网页中的字体有3个来源:1.用户机器中安装的字体:2.保存在第三方网站上的字体.可以使用link标签把它们链接到页面中:3.保存在子集的web服务器上的字体.可以使用@font-face规则随 ...
- WindowsService(Windows服务)开发步骤附Demo 【转】
转http://www.cnblogs.com/moretry/p/4149489.html 1.打开VS,新建项目,选择Windows服务,然后设置目录及项目名称后点击确定. 2.展开Service ...
- web基础之Structs(一篇)
为什么有 struts 框架 Struct 的优点之处: 1. struct的好处 2. 程序更加规范化 3. 程序的可读性提 ...
- word文档中查找和替换空格符和回车符
空格符:^l 回车符:^p
- BestCoder Round #11 题解集合
1001.Alice and Bob 签到题*1,只要x * 2 == n && y * 2 == m就满足条件. var m, n, x, y : int64; begin whil ...
- JBoss JMX登录需要用户名密码的解决办法
/opt/jboss/eap5.1.2/jboss-as/server/default/conf/props/jmx-console-users.properties 取消#admin=admin的注 ...
- intel的网卡故障
现象: 机器键盘接入,敲入无反应:机器无法ping通,整台机器假死状态. 查看message的日志,日志为如下内容: Aug :: TSMIS-CF kernel: ::19.0: eth0: Det ...