UVA 10624 - Super Number(DFS)

本文通过使用打表法解决了一道编程题目,并分享了具体的实现代码。作者在解决问题的过程中遇到了多次错误并逐步修正,最终成功地解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目链接

看错题了。。。。。导致WA 5 6次重改后(期间还打了次表发现表错了),先交了次,TLE,然后打表恶搞之。。。

400+的表不长。。一下为打表的代码。应该有剪枝,唉,自己想不出来啊。。。

 1 #include <stdio.h>
 2 #include <string.h>
 3 int p[41],z,n;
 4 int mod(int x)
 5 {
 6     int i,mo = 0;
 7     for(i = 1; i <= x; i ++)
 8     {
 9         mo = (mo*10 + p[i])%x;
10     }
11     if(mo)
12         return 0;
13     else
14         return 1;
15 }
16 void dfs(int step,int m)
17 {
18     int i;
19     if(z) return ;
20     if(step > m)
21     {
22         z = 1;
23         for(i = 1; i <= m; i ++)
24             printf("%d",p[i]);
25         return ;
26     }
27     if(step == 1)
28     {
29         for(i = 1; i <= 9; i ++)
30         {
31             p[step] = i;
32             dfs(step+1,m);
33         }
34     }
35     else if(step < n)
36     {
37         for(i = 0; i <= 9; i ++)
38         {
39             p[step] = i;
40             dfs(step+1,m);
41         }
42     }
43     else if(step >= n)
44     {
45         for(i = 0; i <= 9; i ++)
46         {
47             p[step] = i;
48             if(mod(step))
49                 dfs(step+1,m);
50         }
51     }
52     return ;
53 }
54 int main()
55 {
56     int t,m,num = 0;
57     freopen("a.txt","w",stdout);
58     for(n = 1; n <= 30; n ++)
59     {
60         for(m = n+1; m <= 30; m ++)
61         {
62             z = 0;
63             scanf("%d%d",&n,&m);
64             printf("else if(n == %d&& m == %d)printf(\"",n,m);
65             dfs(1,m);
66             if(!z) printf("-1");
67             printf("\");\n");
68         }
69     }
70     return 0;
71 }

转载于:https://www.cnblogs.com/naix-x/archive/2012/06/25/2562116.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值