USACO Section2.3 Zero Sum 解题报告 【icedream61】
zerosum解题报告
------------------------------------------------------------------------------------------------------------------------------------------------
【题目】
给你N。
把1到N依次写出,每相邻两个数字中间加上一个字符,三选一:'+','-',' '。
如此,便可形成很多表达式,把其中计算结果为0的按字典序输出。
【数据范围】
3<=N<=9
【输入样例】
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
------------------------------------------------------------------------------------------------------------------------------------------------
【分析】
枚举。脑子清楚,代码别写错就好。
------------------------------------------------------------------------------------------------------------------------------------------------
【总结】
一遍AC。
------------------------------------------------------------------------------------------------------------------------------------------------
【代码】
1 /* 2 ID: icedrea1 3 PROB: zerosum 4 LANG: C++ 5 */ 6 7 #include <iostream> 8 #include <fstream> 9 using namespace std; 10 11 int N; 12 char mark[9]; 13 14 int get(int &l) 15 { 16 int r=l; 17 while(r<N && mark[r]==' ') ++r; 18 int x=0; 19 for(int i=l;i<=r;++i) x=x*10+i; 20 l=r+1; 21 return x; 22 } 23 24 void get(int i,char &c) 25 { 26 c=mark[i-1]; 27 } 28 29 void print(ostream& out) 30 { 31 for(int i=1;i<=N-1;++i) out<<i<<mark[i]; 32 out<<N<<endl; 33 } 34 35 void test(ostream& out) 36 { 37 //cout<<"test: "; print(cout); 38 int r=0; 39 char c='+'; 40 for(int i=1,num=get(i);;num=get(i)) 41 { 42 if(c=='+') r+=num; else r-=num; 43 if(i==N+1) break; else get(i,c); 44 } 45 if(r==0) print(out); 46 } 47 48 void go(int i,ostream& out) 49 { 50 //cout<<i<<endl; 51 if(i==N) { test(out); return; } 52 mark[i]=' '; go(i+1,out); 53 mark[i]='+'; go(i+1,out); 54 mark[i]='-'; go(i+1,out); 55 } 56 57 int main() 58 { 59 //printf("%d %d %d\n",'+','-',' '); 60 61 ifstream in("zerosum.in"); 62 ofstream out("zerosum.out"); 63 64 in>>N; 65 66 go(1,out); 67 68 in.close(); 69 out.close(); 70 return 0; 71 }
posted on 2015-05-23 18:14 IceDream61 阅读(206) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端