微软2015实习第二题Professor Q's Software

来源:互联网 发布:市川海老藏 知乎 编辑:程序博客网 时间:2024/06/15 22:52
<img src="http://img.blog.csdn.net/20150403222956675?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcHFsZW8=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /><img src="http://img.blog.csdn.net/20150403223015333?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcHFsZW8=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /><img src="http://img.blog.csdn.net/20150403222953387?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcHFsZW8=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
#include<stdio.h>#include<string.h>#include<math.h>#include<cstdlib>#include<stack>using namespace std;struct module{int start_signal;int K;int * gen_signal;int time;bool flag;};bool check(int tem,module * my_module,int N){for(int i = 0;i < N;++i){if(my_module[i].start_signal == tem)return true;}return false;}int main(){   int  T;   scanf("%d",&T);   while(T--)   {   int N,M;   scanf("%d %d",&N,&M);   int *init = new int[M];   for(int i = 0;i < M;++i)   scanf("%d",&init[i]);   module * my_module = new module[N];   for(int i = 0;i < N;++i)   {   scanf("%d %d",&my_module[i].start_signal,&my_module[i].K);   if(my_module[i].K != 0)my_module[i].gen_signal = new int[my_module[i].K];   for(int j = 0;j<my_module[i].K;++j)   scanf("%d",&my_module[i].gen_signal[j]);   my_module[i].time = 0;   }  stack<int> singal;  for(int i = 0 ;i < M;++i)  {  for(int j = 0; j < N;++j)  {  if(my_module[j].start_signal == init[i])  {  my_module[j].time++;  for(int k =0;k <my_module[j].K;++k)  singal.push(my_module[j].gen_signal[k]);  }  }  }  while(!singal.empty())  { int test =    singal.top();  int flag = false; for(int i = 0;i < N;++i) { my_module[i].flag = false; if(my_module[i].start_signal == singal.top()) { my_module[i].time++; my_module[i].flag = true; flag = true;  }  } int flag1= false; for(int i = 0;i < N;++i) { if(my_module[i].flag == true) { if(flag1 ==false) {  singal.pop();  flag1 = true; } for(int j = 0;j <my_module[i].K;++j) singal.push(my_module[i].gen_signal[j]); int  test1 =    singal.top();  } } if(flag==false)singal.pop();  }  for(int i = 0;i < N;++i)  {  printf("%d ",my_module[i].time);  }  printf("\n");  delete  []init;  delete []my_module;   }   getchar();   getchar();   getchar();  return 0;}

代码自己写的都感觉有点乱。。。测试数据是通过了的 不知道能不能过


题目


0 0