tyvj1271 零式求和

描述

请考虑一个由1到N(N=3, 4, 5 ... 9)的数字组成的递增数列:1 2 3 ... N。现在请在数列中插入“+”表示加,或者“-”表示减,抑或是“ ”表示空白(例如1-2 3就等于1-23),来将每一对数字组合在一起(请不在第一个数字前插入符号)。计算该表达式的结果并注意你是否得到了和为零。请你写一个程序找出所有产生和为零的长度为N的数列。

输入格式

单独的一行表示整数N (3 <= N <= 9)。

输出格式

按照ASCII码的顺序,输出所有在每对数字间插入“+”, “-”, 或 “ ”后能得到和为零的数列。

测试样例1

输入

7

输出

1+2-3+4-5-6+7 
1+2-3-4+5+6-7 
1-2 3+4+5+6+7 
1-2 3-4 5+6 7 
1-2+3+4-5+6-7 
1-2-3-4-5+6+7

思路:

1.枚举加减乘除,用dfs,在dfs的过程中把加减乘除搞一个数组记录下来

2.如果递归到了最后一个数字,考虑算和的问题,从低位枚举,如果遇到空格,把当前要加或减的数进一位,如果遇到加或减就将记录的数加进去,最后再处理一下,判断,计数

代码:

#include<iostream>
using namespace std;
int n,ans[20],acc;
void judge(){
    int sign = 1;
    int now = 0;
    int next = 1;
    for(int i = 1;i < n;i++){
        if(ans[i] == 3){
            next = next * 10 + (i+1);
        }else{
            if(sign == 1) now += next;
            if(sign == 2) now -= next;
            if(ans[i] == 1) sign = 1;
            if(ans[i] == 2) sign = 2;
            next = i + 1;
        }
    }
    if(sign == 1) now += next;
    if(sign == 2) now -= next;
    if(!now){
        for(int i = 1;i < n;i++){
            cout<<i;
            if(ans[i] == 1) cout<<"+";
            if(ans[i] == 2) cout<<"-";
            if(ans[i] == 3) cout<<" ";
        }
        cout<<n<<endl;
    }
}
int dfs(int deep){
    if(deep == n){
        judge();
        return 0;
    }
    ans[deep] = 3;
    dfs(deep+1);
    ans[deep] = 1;
    dfs(deep+1);
    ans[deep] = 2;
    dfs(deep+1);
}
int main(){
    cin>>n;
    dfs(1);
    return 0;
}
时间: 2024-07-30 10:18:31

tyvj1271 零式求和的相关文章

最终幻想零式

2015年3月发售的[FINAL FANTASY零 式HD](株式会社SQUARE?ENIX),是2011年10月发售的PSP游戏的HD重制版,不光是主要角色模型的高模化和Texture的高分辨率化,还新构筑了渲染管线,包含了大量丰富的后处理滤镜,在次世代机的PS4/Xbox One实现了视觉上1080p和30fps.这里会分别介绍KANSAI CEDEC的演讲HD重制技术,以及CGWorld上刊载的演讲没有提及的部分. 最终幻想零式 HD 面向[次世代机视觉]HD重制版的新标准 本作是2011

杭电ACM2011--多项式求和

多项式求和 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 108816    Accepted Submission(s): 61288 Problem Description 多项式的描述如下:1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + ...现在请你求出该多项式的前n项的和. Input 输入数据由2行组成,

龙威零式_团队项目例会记录_3

第三次会议记录 会议议程: 工作回顾: 1. 爬虫方面:爬虫就是一个遍历的过程 可以由多种语言完成,主要涉及一些网络接口的使用,设计网页html读取这样的基本知识 2. 网页方面:学习看html 标签相关,这个一般来说都比较简单.还有高级的一些内容,例如js用于动态网页制作等 3. 服务器相关:主要工作时在多个服务器之间进行通讯,这个是需要学习的主要内容,别的倒是没什么 下阶段工作重点明确: 与另外一个团队的沟通还是重中之重 经过老师的一些点播,也明确了之前的方向并不是很准确,爬虫放面不是我们的

龙威零式-团队博客

团队介绍 开发小组: 谷大鑫: 热爱编程,技术狂魔,可以对感兴趣的技术钻研到茶饭不思,队伍的技术中坚.标签:整个队伍里最靠谱的人. 杨金键: 计院学生,男,未曾有相关开发经验,不是大腿,照片是表哥的,性取向正常,平日打游戏看动漫,但没有加入ll等邪教,不玩氪金手游,游戏动漫更新换代快,无特殊信仰,无特殊爱好,无特殊毛病,随处可见的平凡的不会在暗中拯救世界的中国大学生(小编:他只是比较低调) 测试小组: 谢振威: 学过的东西和系里的大部分同学一样,Java,c,c艹什么的,自称这2年最大的遗憾就是

龙威零式_团队项目例会记录_8

每日任务内容:   姓名 今日任务 明日安排 金豪 文件规格说明以及架构规划 完善软件设计架构 敲定细节 谷大鑫 编写数据处理完成后上传到solr服务区上的程序 编写数据处理程序,阅读上一届代码并整合以适应我们的接口 杨金键 效果并不理想,实现麻烦,经过知道计划改用现成的库 尝试用现成的处理库观测效果如何 谢振威 在网上查找处理html的代码库 调用其处理html 崔正龙 使用C#处理中文字符串 使用分词器处理中文word文档 使用分词库进行分词 比较多个分词库之间的效果 开会照片: (拍摄人:

龙威零式_团队项目例会记录_6

每日任务内容:   姓名 今日任务 明日安排 金豪 了解了一些服务器相关知识 跟进服务器状态,解决不能使用的试问 继续学习服务器使用 有空就多读读代码 谷大鑫 编写doc文件从服务器下载到本地的程序 编写doc文件打开并且转为txt的程序 杨金键 仍在探究如何有效的处理数据,对于html的数据格式有了答题的了解 在今天的基础上继续学习,并且学习dll的使用 谢振威 了解html语言语法 学习html语言 尝试写demo 崔正龙 尝试使用C#处理word文件 继续使用C#处理word 学习搜索关键

龙威零式_团队项目例会记录_2

有图有真相 会议议程: 任务回顾: 首先昨天布置的任务大家都已经陆陆续续开始做了,只是苦于整体的框架还并不清晰 所以没有什么突破性的进展 明日安排: 今天在项目方面我们终于拿到了服务器的相关数据,所以明天大家所有人除了继续完成昨天遗留的任务之外,每个人都要登录服务器并且先熟悉一下代码,并且进行分工阅读代码. 大家普遍对之后的任务有较高的期待 大家加油

龙威零式_团队项目例会记录_7

每日任务内容:   姓名 今日任务 明日安排 金豪 跟进服务器状态 了解爬虫内部机制 谷大鑫 尝试与爬虫数据库连接并通过阅读代码以及博客获得数据库格式 基本弄清爬虫数据存放位置 完成数据的提取 定义数据库格式,完成处理完成数据上传到在线系统服务器 杨金键 大致了解dll,设计好了html的处理方式 写一些demo跑跑看运行效果 谢振威 学习使用一部分html标签 针对学到的部分标签编写数据处理程序 崔正龙 学习C#处理word 学习搜索关键字相关算法 使用C#处理中文字符串 使用分词器处理中文w

深搜——数字划分问题

TYVJ 1271 零式求和 描述 请考虑一个由1到N(N=3, 4, 5 ... 9)的数字组成的递增数列:1 2 3 ... N.现在请在数列中插入“+”表示加,或者“-”表示减,抑或是“ ”表示空白(例如1-2 3就等于1-23),来将每一对数字组合在一起(请不在第一个数字前插入符号).计算该表达式的结果并注意你是否得到了和为零.请你写一个程序找出所有产生和为零的长度为N的数列. 输入格式 单独的一行表示整数N (3 <= N <= 9). 输出格式 按照ASCII码的顺序,输出所有在每