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

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 有偿求码,CNN+LSTM实现单通道脑电信号EEG的睡眠分期评估
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
  • ¥20 matlab yalmip kkt 双层优化问题
  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体
  • ¥88 实在没有想法,需要个思路