nyoj 1170 最大的数(贪心)
来源:互联网 发布:电视看网络 编辑:程序博客网 时间:2024/05/22 14:44
最大的数
描述
小明和小红在打赌说自己数学学的好,于是小花就给他们出题了,考考他们谁NB,题目是这样的给你N个数
在这n个数之间添加N-1个*或+,使结果最大,但不可以打乱原顺序,请得出这个结果
如
1 3 5
结果是(1+3)*5=20;最大
可以添加若干个括号,但一定要保证配对,但是每两个数之间只可能有一个*或+
数列最前和最后不应有+或乘
小明想赢小红但是他比较笨,请你帮帮他
输入
多组测试数据以EOF结束,每组有一个n(n<10000),然后有n个正整数a[i](1<=a[i]<=20)
输出
输出最大的结果由于结果比较大,结果对10086取余
样例输入
3
1 2 3
3
5 1 2
样例输出
9
15
思路:
其实就是找1,然后将1加到别的数上
但是本题最坑的就是当p[i]==1时,如果p[i-1]==2&&p[i+1]==1,则1应加到p[i-1]上(目的是将连续的1”加乘”起来,而不是加起来)
代码:
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;int p[10010];int main(){ int n; while(~scanf("%d",&n)) { p[0]=21,p[n+1]=21; for(int i=1; i<=n; ++i) scanf("%d",&p[i]); if(n==1) { printf("%d\n",p[n]); continue; } for(int i=1; i<=n; ++i) { if(p[i]==1) { if(p[i-1]<=p[i+1]||(p[i-1]==2&&p[i+1]==1)) { p[i]+=p[i-1]; p[i-1]=1; } else p[i+1]+=p[i]; } } int ans=p[1]; for(int i=2; i<=n; ++i) ans=(ans*p[i])%10086; printf("%d\n",ans); } return 0;}
阅读全文
1 0
- nyoj 1170 最大的数(贪心)
- NYOJ 1170 最大的数 贪心
- NYOJ 1170 最大的数(贪心算法)
- nyoj 448寻找最大数(贪心)
- NYOJ 448 寻找最大数(贪心)
- NYOJ 448 最大数 贪心
- 寻找最大数 NYOJ 贪心
- 最大的数(nyoj 1170)
- NYOJ 1170 最大的数(待续)
- 最大的数 nyoj 1170
- NYOJ 1170 最大的数
- NYOJ-1170 最大的数
- NYOJ 1057 寻找最大数(三)(贪心)
- nyoj 1057 寻找最大数(三) 贪心
- NYOJ 1057 寻找最大数(三) (贪心)
- nyoj 1057寻找最大数(三) 贪心
- nyoj--1057--寻找最大数(三)(贪心)
- NYOJ 1057 寻找最大数(三)贪心算法
- JavaScript 面向对象思想以及原型、继承
- C++中Override
- 查缺补漏--php(其他类型转为int)
- servlet.listener
- 再次深入理解TCP网络编程中的send和recv
- nyoj 1170 最大的数(贪心)
- 字符设备驱动模型
- Android 设置应用的底部导航栏(虚拟按键)背景颜色
- junit继承spring配置信息
- C#路径/文件/目录/I/O常见操作汇总
- Object对象
- margin的负值
- hdu 2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活【多重背包V*Σ log n[i]】
- 第07章 ORM映射:基于主键的一对一