aesm1p 2017-04-03 08:16 采纳率: 0%
浏览 1023

c++ oj题不知道为什么答案老是不对真是太难受了

Input
本题有多组数据
每组数据的第一行有两个整数N, M  (1 <= N,M <= 1000) 分别代表申请的同学总数和算法总数
接下来的N行,每行第一个都是整数C(1 <= C <= 100) 代表这位同学精通C种算法,接着这一行会有C个整数,代表这位同学所精通的算法(算法用一个数字表示)

Output
每组数据输出一行
首先输出一共需要招多少位同学 接着这一行输出所招同学的序号
如果某组数据有多种方案,任意给出一种可行解即可
如果不存在这样的方案,只要输出”NO”
#include
using namespace std;
bool func1(int *a,int *b)
{
for(int i=1;i<=a[0];i++)
{
for(int j=1;j<=b[0];j++)
{
if(a[i]==b[j])
return 0;
}
}
return 1;
}
int main()
{
int m,n;
cin>>n>>m;
if(n {
cout return 0;
}
int **a=new int *[n];
int *q=new int[m];
int *cas=new int [n];
int c;
for(int i=0;i {
cin>>c;
if(c {
a[i]=new int [1];
a[i][0]=m+1;
continue;
}
a[i]=new int [c+1];
a[i][0]=c;
for(int j=1;j {
cin>>a[i][j];
}
}
int r=0;cas[0]=0;
for(int i=0;i<n;i++)
{

int sum=1;q[sum-1]=i+1;
int t=m-a[i][0];
for(int j=i+1;j<n;j++)
{
if(a[j][0]<=t)
{
if(func1(a[i],a[j]))
{
t-=a[j][0];
sum+=1;
q[sum-1]=j+1;
continue;
}
}

}
if(t==0)
{
cas[r]=sum;
for(int x=0;x<r||x==0;x++)
{
if(cas[x]==cas[r]&&r!=0)
break;
if(x==r-1||r==0)
{
cout<<cas[r]<<" ";
for(int k=0;k<sum;k++)
{
cout<<q[k]<<" ";
}
cout<<endl;
}

}r++;

}

}
if(cas[0]==0)
cout<<"No."<<endl;
for(int i=0;i<n;i++)
delete [] a[i];
delete []a;
delete [] q;
delete [] cas;
}
我的代码为什么老是wrong answer

  • 写回答

2条回答 默认 最新

  • jalen_zh 博客专家认证 2017-04-03 10:20
    关注

    就是你结果不对呗,很简单;可以在本地编译器调试一下看看结果是不是正确

    评论

报告相同问题?

悬赏问题

  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥30 python代码,帮调试,帮帮忙吧