我没有得到所需的输出

时间:2019-11-03 15:48:04

标签: recursion

有100种不同类型的大写字母,每个小写字母的ID范围从1到100。此外,有“ n”个人分别具有不同数量的大写字母的集合。有一天,所有这些人都决定参加一个戴着帽子的聚会,但看起来很独特,他们决定他们都不会戴着相同类型的帽子。因此,计算一下安排或方式的总数,以使它们都不佩戴相同类型的帽子。

约束: 1 <= n <= 10 示例:

第一行包含n的值,接下来的n行包含集合 在所有n个人中 输入: 3

5 100 1 //第一人称集合。

2 //第二人称集合。

5 100 //第三人称集合。

输出: 4

说明:所有有效的方法是(5, 2, 100)(100, 2, 5),             (1, 2, 5)(1, 2, 100) 我得到的输出-

(5,2,100)

我的代码是-

#include <iostream>
#include <vector>
#include <string>
#include <sstream>
#include <cstring>
using namespace std;
vector<int>c[10];

void comb(int index,int n,int d[],int v[])
{ 

if(index==n)
   {for(int i=0;i<n;i++)
       cout<<d[i]<<"  "; 
       memset(v,0,sizeof(v));
       cout<<endl;
    return;
}
for(int k=0;k<c[index].size();k++)
{   if(v[c[index][k]]==0)
   { v[c[index][k]]=1;

   d[index]=c[index][k];

   comb(index+1,n,d,v);}

}
}

void enter(int n){
    int x;
    string str,temp;
    getline(cin,str);
    for(int i=0;i<n;i++)
   { getline(cin,str);
    stringstream ss(str);
    while(ss>>temp){
        stringstream s;
        s<<temp;
        s>>x;
        c[i].push_back(x);

    }
}
int v[101]{};
int d[n];
comb(0,n,d,v);}
     int main()
    {    int n;
        cin>>n;
        enter(n);
        return 0;
        }

0 个答案:

没有答案