ACCEPT

acm作业
因为老师是在集合那里要我们做这道题。所以我很是天真的就以为要用集合做,结果发现网上都是用数组简单明了地实现了,显得我的代码,特么地超级恶心!!!!!!!
在这里存档一下,别人就不要看了,ZOJ的格式也真是恶心。。。居然因为这个也弄了好久,应该只有我一个人用这么 没脑的集合方式做吧。。真的是哭瞎在厕所里!!!
//#include "stdafx.h"
#include"stdio.h"
#include"iostream"
#include<set>
using namespace std;
int tem[33] = { 0 };//存放加数 以便输出
int i = 0;
int flag = 0;
int c_sum=0;
void dfs(set<int> &c_iset, set<int>::iterator c_iterator, int de, int num)//num为加数个数
{
set<int>::iterator set_iter1;
if (num == 2)//两个加数时
{ for (set_iter1 = c_iterator, set_iter1++; *set_iter1 <*c_iset.rbegin(); set_iter1++)//set_iter1++,指向下一个、这里实现的是第二个加数
{
//c_sum = 0;
tem[de] = *set_iter1;
c_sum += tem[de];
// for (int k = 0; tem[k] != 0; k++)
// {
// c_sum = c_sum + tem[k];
// }
if (c_iset.find(c_sum) != c_iset.end())//找到sum 成功可输出
{
flag = 1;//成功标志
printf("%d", tem[0]);
for (int j = 1; tem[j] != 0; j++)
{
printf("+%d", tem[j]);
}
printf("=%d\n", c_sum); }
if (c_sum >= *c_iset.rbegin())//结束,不必再继续递归下去
{
tem[de] = 0;//重置为0 ,已经输出过了
return;
}
c_sum -= tem[de];
//dfs(c_iset, set_iter1, de + 1);//到下一个数 }
}
else
{
for (set_iter1 = c_iterator, set_iter1++; *set_iter1 <*c_iset.rbegin(); set_iter1++)//set_iter1++,指向下一个、这里实现的是第二个加数
{
tem[de] = *set_iter1;//减少一个数
c_sum = 0;
for (int k = 0; tem[k] != 0; k++)
{
c_sum = c_sum + tem[k];
}
if (c_sum > *c_iset.rbegin())//超过最后一个没有必要再进行下去了
{
tem[de] = 0;
return;
} num--;
dfs(c_iset, set_iter1, de + 1, num);
num++;
}
}
tem[de] = 0;//重置为0
return;
}; int main()
{
int n, m, l ;
set<int>iset;
set<int>::iterator set_iter;//
scanf("%d", &n);//多少组
while (n-- > 0)
{
scanf("%d", &m);//每组个数
iset.clear();//清空
for (int j = 0; j < m; j++)
{
scanf("%d", &l);
iset.insert(l); }
flag = 0; for (int j = 2; j < m; j++)//加数个数从2到m-1个
{
for (set_iter = iset.begin(); *set_iter <* iset.rbegin(); set_iter++)//固定的第一个加数
{ c_sum = *set_iter;
tem[0] = c_sum;
i = 1;
dfs(iset, set_iter, i,j);
}
}
if (flag == 0)
{
printf("Can't find any equations.\n");
}
printf("\n");
}
return 0;
}
下面的就不要看了,是第一次写错的结果每次accept都 是历经千辛万苦!!隔了要两个月了吧
========================================================================================================================================================================================================================================================================
WRONG ANSWER

set 作为参数要引用&!

注意还原,调试非常好用!

虽然做出来一点意思了,但是不符合要求。。。顺序这个,是要考我们按层次递归么?太蠢了!

但是第一次按自己的意思写出了想要的递归,我舍不得删掉,要留着

t等我写出答案,再来。。。

#include "stdafx.h"
#include"stdio.h"
#include"iostream"
#include<set>
using namespace std;
int tem[33] = { 0 };//存放加数 以便输出
int i = 0;
int flag = 0;
void dfs(set<int> &c_iset, set<int>::iterator c_iterator, int de)
{
set<int>::iterator set_iter1;
for (set_iter1 = c_iterator, set_iter1++; set_iter1 != c_iset.end(); set_iter1++)//set_iter1++,指向下一个
{
int c_sum = 0;
tem[de] = *set_iter1;
for (int k = 0; tem[k] != 0; k++)
{
c_sum = c_sum + tem[k];
}
if (c_iset.find(c_sum) != c_iset.end())//找到sum 成功可输出
{
flag = 1;//成功标志
printf("%d", tem[0]);
for (int j = 1; tem[j] != 0; j++)
{
printf("+%d", tem[j]);
}
printf("=%d\n", c_sum);
}
if (c_sum >= *c_iset.rbegin())//结束,不必再继续递归下去
{
tem[de] = 0;//重置为0
return;
}
dfs(c_iset, set_iter1, de + 1); }
tem[de] = 0;//重置为0
return;
}; int main()
{
int n, m, l, sum;
set<int>iset;
set<int>::iterator set_iter;//
scanf("%d", &n);
while (n-->0)
{
scanf("%d", &m);
iset.clear();//清空
while (m > 0)
{
scanf("%d", &l);
iset.insert(l);
m--;
}
flag = 0;
for (set_iter = iset.begin(); set_iter != iset.end(); set_iter++)
{ sum = *set_iter;
tem[0] = sum;
i = 1;
dfs(iset, set_iter, i);
}
if (flag==0)
{
cout << "Can't find any equations." << endl;
}
}
return 0;
}

zoj 1204 Additive equations的更多相关文章

  1. ZOJ1204——Additive equations(DFS)

    Additive equations Description We all understand that an integer set is a collection of distinct int ...

  2. ZOJ 1204 一个集合能组成多少个等式

    Additive equations Time Limit : 20000/10000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other ...

  3. POJ题目细究

    acm之pku题目分类 对ACM有兴趣的同学们可以看看 DP:  1011   NTA                 简单题  1013   Great Equipment     简单题  102 ...

  4. 【转】POJ百道水题列表

    以下是poj百道水题,新手可以考虑从这里刷起 搜索1002 Fire Net1004 Anagrams by Stack1005 Jugs1008 Gnome Tetravex1091 Knight ...

  5. Additive equations--zoj

    Additive equations Time Limit: 10 Seconds      Memory Limit: 32768 KB We all understand that an inte ...

  6. ZOJ ACM 1204 (JAVA)

    毕业好几年了,对算法还是比較有兴趣,所以想又一次開始做ACM题.俺做题比較任意,一般先挑通过率高的题来做. 第1204题,详细描写叙述请參考,ZOJ ACM 1204 1)难度分析 这个题目,基本的难 ...

  7. 重拾ZOJ 一周解题

    ZOJ 2734 Exchange Cards 题目大意: 给定一个值N,以及一堆卡片,每种卡片有一个值value和数量number.求使用任意张卡片组成N的方式. 例如N = 10 ,cards(1 ...

  8. ZOJ题目分类

    ZOJ题目分类初学者题: 1001 1037 1048 1049 1051 1067 1115 1151 1201 1205 1216 1240 1241 1242 1251 1292 1331 13 ...

  9. ZOJ People Counting

    第十三届浙江省大学生程序设计竞赛 I 题, 一道模拟题. ZOJ  3944http://www.icpc.moe/onlinejudge/showProblem.do?problemCode=394 ...

随机推荐

  1. CodeForces 131A cAPS lOCK

    cAPS lOCK Time Limit:500MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Submit St ...

  2. 错题集锦(二) -- Java专项

    错题集锦(二) -- Java专项 标签(空格分隔): 找工作 JVM的内存模型 线程共享: 堆(Heap):主要存放一些对象实例 方法区(Method Area / Non-Heap):用于存储已被 ...

  3. Bson

    https://en.wikipedia.org/wiki/BSON BSON /ˈbiːsɒn/ is a computer data interchange format used mainly ...

  4. How To Use RUN_PRODUCT In Oracle Forms

    Run_Product is used to run Oracle Reports (RDF/REP files) in Oracle Forms. It invokes one of the sup ...

  5. [CF733D]Kostya the Sculptor(贪心)

    题目链接:http://codeforces.com/contest/733/problem/D 题意:给n个长方体,允许最多两个拼在一起,拼接的面必须长宽相等.问想获得最大的内切圆的长方体序号是多少 ...

  6. [HDOJ3911]Black And White(线段树,区间合并)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3911 题意:一个01串,两种操作: 0 a b:查询[a,b]内连续1的最长长度. 1 a b:翻转[ ...

  7. postgreSql基础命令及linux下postgreSql命令

    (1)用户实用程序: createdb 创建一个新的PostgreSQL的数据库(和SQL语句:CREATE DATABASE 相同) createuser 创建一个新的PostgreSQL的用户(和 ...

  8. javascript权威指南笔记--javascript语言核心(五)--getter和setter属性

    getter和setter属性: var p = { x:1.0, y:1.0, get r(){ return Math.sqrt(this.x*this.x + this.y * this.y); ...

  9. 个人博客作业_week2

    1. 是否需要有代码规范   1.这些规范都是官僚制度下产生的浪费大家的编程时间.影响人们开发效率,浪费时间的东西. 我不同意这个论点.      有句俗语’无规矩不成方圆‘,这亘古传承的至理同样适用 ...

  10. iOS - UIStepper

    前言 NS_CLASS_AVAILABLE_IOS(5_0) __TVOS_PROHIBITED @interface UIStepper : UIControl @available(iOS 5.0 ...