首页 > 代码库 > (周六赛1)Sum it up
(周六赛1)Sum it up
题意:
Sample Input
4 6 4 3 2 2 1 1
5 3 2 1 1
400 12 50 50 50 50 50 50 25 25 25 25 25 25
0 0
Sample Output
Sums of 4:
4
3+1
2+2
2+1+1
Sums of 5:
NONE
Sums of 400:
50+50+50+50+50+50+25+25+25+25
50+50+50+50+50+25+25+25+25+25+25
注意每个数只能用一次,且不能出现重复的等式
题解 :dfs深搜
1 #include<stdio.h> 2 int a[20],ans[20]; 3 int sum,n,flag; 4 void dfs(int x,int count,int m) 5 { 6 int last,i; 7 if(m>sum) 8 return; 9 if(m==sum)10 {11 flag=1;12 for(i=1;i<count;i++)13 {14 if(i==count-1)15 printf("%d\n",ans[i]);16 else17 printf("%d+",ans[i]);18 }19 }20 last=-1;21 for(i=x;i<=n;i++)22 {23 if(last!=a[i])24 {25 ans[count]=a[i];26 last=a[i];27 dfs(i+1,count+1,m+a[i]);28 }29 }30 return;31 }32 33 int main()34 {35 int i;36 while(~scanf("%d %d",&sum,&n))37 {38 if(sum==0&&n==0)39 break; 40 for(i=1;i<=n;i++)41 scanf("%d",&a[i]);42 flag=0;43 printf("Sums of %d:\n",sum);44 dfs(1,1,0);45 if(!flag)46 puts("NONE"); 47 }48 return 0;49 }
(周六赛1)Sum it up
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。