[2018大华软件创新挑战赛]模拟赛第四题

题目 输入 输出 限制 示例

有一种特殊的正整数(int类型),将数分为两侧,每侧至少有一位数,两侧的每个数字相加相等,请写出判断的方法用来检测是否这种数。


比如:1236,可以拆分为123和6。

输入的第一行指定用例数量T;
用例的第二行输入正整数;

输出是否为特殊的正整数  

bool is_magicnum(int number)

intput:
2
1232145
4543622

output:
1
1

【实现代码】:

 1 #include <stdio.h>
 2 
 3 int result[100000];
 4 int count;
 5 
 6 void combination(int* arr,int i,int cnt)
 7 {
 8         if(i >= cnt)
 9         {
10                 int sum = 0;
11                 for(int j=0; j<cnt; j++)
12                 {
13                         sum += arr[j];
14                 }
15                 for(int j=0; j<count; j++)
16                 {
17                         if(sum == result[j]) return;
18                 }
19                 result[count++] = sum;
20                 return;
21         }
22 
23         int temp = arr[i];
24         arr[i] = 0;
25         combination(arr,i+1,cnt);
26         arr[i] = temp;
27         combination(arr,i+1,cnt);
28 }
29 
30 int main()
31 {
32         int t = 0;
33         scanf("%d",&t);
34         while(t--)
35         {
36                 int n = 0;
37                 scanf("%d",&n);
38 
39                 int val[n];
40                 for(int i=0; i<n; i++)
41                 {
42                         scanf("%d",&val[i]);
43                 }
44 
45                 int num[n];
46                 int cnt = 0;
47                 for(int i=0; i<n; i++)
48                 {
49                         scanf("%d",&num[i]);
50                         cnt += num[i];
51                 }
52 
53                 int arr[n*cnt];
54                 cnt = 0;
55                 for(int i=0; i<n; i++)
56                 {
57                         for(int j=0; j<num[i]; j++)
58                         {
59                                 arr[cnt++] = val[i];
60                         }
61                 }
62                 printf("\n");
63                 combination(arr,0,cnt);
64                 printf("%d \n",count);
65         }
66 }
View Code

【代码效果】:

猜你喜欢

转载自www.cnblogs.com/usingnamespace-caoliu/p/8975261.html