indeed最后一题

有做了indeed笔试的同学吗?最后一题我有3个测试用例通过不了,找不到原因,求助啊!
#include <iostream>
#include <vector>
#include <string>
#include <map>
#include <algorithm>
using namespace std;
int main()

    string s;
    cin>>s;
    int N=s.length();
    if(N<=10)
    {
         vector<char> tmp;
        for(int i=0;i<N;i++)
        {
            if(s[i]!='?')
            {
                int t=s[i]-'0';
                if(find(tmp.begin(),tmp.end(),t)!=tmp.end())
                {
                    cout<<0<<endl;
                    return 0;
                }
                else
                    tmp.push_back(t);
            }            
        }
        if(tmp.size()==N)
        {
            cout<<1;
            return 0;
        }
        int a=N-tmp.size();
        int c=10-tmp.size();
        int count=1;
        for(int i=0;i<a;i++)
            count*=c--;
        cout<<count<<endl;
    }
    else
    {
        int tmp[10]={-1,-1,-1,-1,-1,-1,-1,-1,-1,-1};
        for(int i=0;i<N;i++)
        {
            if(s[i]!='?')
            {
                if(tmp[i%10]!=-1)
                {
                    if(tmp[i%10]!=s[i]-'0')
                    {
                        cout<<0<<endl;
                        return 0;
                    }
                }
                else
                    tmp[i%10]=s[i]-'0';
            }
        }
        int num=0;
        for(int i=0;i<10;i++)
            if(tmp[i]!=-1)
                num++;
        if(num==10)
        {
            cout<<1;
            return 0;
        }
        int a=10-num;
        int count=1;
        for(int i=a;i>=1;i--)
            count*=i;
        cout<<count<<endl;
    }
    
    return 0;
}
全部评论
当N大于10的时候你没有判断某个数字是否已经在别的位置出现过了
点赞
送花
回复
分享
发布于 2016-10-22 23:46
第三题是不是直接将最大的移至最后
点赞
送花
回复
分享
发布于 2016-10-23 22:23
滴滴
校招火热招聘中
官网直投

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务