Lucky_- 2018-05-26 06:58 采纳率: 66.7%
浏览 573
已结题

着急,为什么总是运行不出来 HDU题目:A - GREAT + SWERC = PORTO

题目:图片说明图片说明
问题:自己看了题解之后写了代码,可是还是出不来,不懂是哪里出错了,请大家指教!!!!!!
我的代码:

#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;

    int len[20],letter[20],dex,n,i,j,ans,num[200],flag[200];    
    char str[20][20];

    int check()
    {
        for(i = 0;i < n; i++)
        {
            if(num[str[i][0]] == 0)
                return 0;
        }
        int jin = 0;
        for(j = 0;j < len[n - 1]; j++)
        {
            if(num[str[n - 1][len[n - 1] - 1 - j]] == -1)
                return 1;
            int sum = jin;
            for(i = 0;i < n - 1; i++)
            {
                if(len[i] - 1 - j < 0)
                    continue;
                if(num[str[i][len[i] - 1 - j]] == -1)
                    return 1;
                sum += num[str[i][len[i] - 1 - j]];
            }
            if(sum % 10 != num[str[n - 1][len[n - 1] - 1 - j]])
                return 0;
            jin = sum / 10;
        }
        return !jin;
    }

    void dfs(int dex)
    {
        if(dex == -1)
        {
            ans++;
            return;
        }
        for(i = 0;i < 10; i++)
        {
            if(flag[i] == 0)
            {
                flag[i] = 1;
                num[letter[dex]] = i;
                if(check())
                    dfs(dex - 1);
                flag[i] = 0;
                num[letter[dex]] = -1; 
            }
        }
    }

int main()
{
    while(scanf("%d",&n) != EOF)
    {
        dex = -1;
        memset(num,0,sizeof(num));
        for(i = 0;i < n; i++)
        {
            scanf("%s",str[i]);
            len[i] = strlen(str[i]);
            for(j = 0;j < len[i]; j++)
            {
                if(!num[str[i][j]])
                {
                    num[str[i][j]] = 1;
                    letter[++dex] = str[i][j];
                }
            }
        }
        ans = 0;
        memset(num,-1,sizeof(num));
        memset(flag,0,sizeof(flag));
        dfs(dex);
        printf("%d\n",ans);
    }
    return 0;
}


  • 写回答

2条回答 默认 最新

  • threenewbee 2018-05-26 07:28
    关注

    昨天帮一个和你类似的学生调试了半天程序,结果被一个抄袭的采纳走,至今还有阴影。

    程序就不帮你看了,这里有个现成的:https://blog.csdn.net/libin56842/article/details/47403457

    让“高手”给你调试吧。

    评论

报告相同问题?

悬赏问题

  • ¥17 pro*C预编译“闪回查询”报错SCN不能识别
  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向