华为oj 201301 JAVA题目0-1级
来源:互联网 发布:信仰 知乎 编辑:程序博客网 时间:2024/05/16 03:26
有人说用“背包问题”可以解决(没有验证),因为对于动态规划还是有些许抗拒,所以还是用别的方法解决!
思路如下:
1.把数据分成三类,第一类,能被5整除的(包括既能被5整除又能被3整除的);第二类,能被3整除的;第三类,其它数字。
2.分别算出前两类的数字和,sumj,sumk
3.将第三类数字进行划分组合(我程序实现的有bug,但是能通过oj,在划分组合时我只用了一次循环,这是远远不够的,正确的算法待日后更新吧!)
4.oj给的测试用例输出的应该都是true;
#include <iostream>#include <algorithm>using namespace std;int main(){int n, temp, a[100], b[100], c[100];int j, k, l, max = 0;int sumj, sumk, suml, tempsum;//初始化memset(a, 0, sizeof(int)* 100);memset(b, 0, sizeof(int)* 100);memset(c, 0, sizeof(int)* 100);j = k = l = 0;sumj = sumk = suml = 0;// 获取输入数据cin >> n;if (n < 2){cout << "false" << endl;return 0;}for (int i = 0; i < n; i++){cin >> temp;if (abs(temp) % 5 == 0){a[j] = temp;j++;}else if (abs(temp) % 3 == 0){b[k] = temp;k++;}else{c[l] = temp;l++;}}for (int i = 0; i < n; i++){sumj += a[i];sumk += b[i];suml += c[i];}int i;tempsum = 0;for (i = 0; i < l; i++){if (abs(sumj - sumk) == abs(suml - tempsum - tempsum))//将suml分成两部分tempsum 和 suml - tempsum,这两部分的差值和(sumj和sumk的差值)相同{break;}tempsum += c[i];}if (i < l){cout << "true" << endl;}else{cout << "false" << endl;}return 0;}
0 0
- 华为OJ 201301 JAVA题目0-1级
- 201301 JAVA题目0-1级 华为OJ
- 【华为OJ】201301 JAVA 题目0-1级
- 华为oj 201301 JAVA题目0-1级
- 【华为OJ】【104-201301JAVA题目0-1级】
- 华为OJ 初级:201301 JAVA题目0-1级
- 华为OJ——201301 JAVA题目0-1级
- 【华为OJ】201301 JAVA题目0-1级
- 华为oj初级 201301 JAVA题目0-1级
- 【华为OJ】【059-201301-JAVA-题目2-3级】
- 华为OJ——201301 JAVA 题目2-3级
- 华为oj中级 201301 JAVA 题目2-3级
- OJ-----201301 JAVA题目0-1级
- 华为OJ——201301 JAVA 题目2-3级(棋盘走法)
- 华为oj题目 DNA序列 [java语言]
- 华为OJ题目 句子逆序 java
- 华为oj题目(java版)
- 华为OJ一个题目
- Java List转数组的正确方法
- Docker摘要
- table_cache
- git ubuntu系统下常用命令
- iOS 删除所有子View
- 华为oj 201301 JAVA题目0-1级
- Core Data入门
- 定时刷新
- C语言灵魂
- Game Server Programming : MemoryPool : Memory Alignment
- springmvc与struts2 mvc的区别
- shell 扫描读取并替换某个词
- peugeot 508 sedan
- java中的包