⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 slice.cpp

📁 关于程序切片的
💻 CPP
字号:
#include <iostream.h>
int d[20][20];  //页面依赖关系矩正
//int s[20],,v[20]
int first_visited[20];
int finenum=0;//结果的粒度大小
int Kind1[]={1};//不包括的依赖边
int Kind2[]={2,3};//不包括的依赖边
void Twosteps_slice (int v[],int x, int Kinds[],int y)//int d[20][20],
{
    int i=0;//,k=0
	int t,n;
	int node_set[20];
	for(i=0;i<x;i++){
		node_set[i]=v[i];   //记录访问的节点
	//cout<<v[i];
	}
	//while (i!=0 && node_set[i]!=-1)
//	{
      for(int j=0;j<i;j++)
	  {
        //if()
		first_visited[finenum++]=node_set[j];
		t=node_set[j];
        node_set[j]=-1;
		//cout<<j<<endl;
		//cout<<i;
		cout<<t;
		//i=i-1;
		for(int m=0;m<20;m++)
		{
			n=d[t][m];
			//
			for(int l=0;l<y;l++){
				if(n!=Kinds[l] && n!=-1)
				{
					node_set[i++]=m;
					break;
					//cout<<m;
				}
			}
		 }//endfor2   
	  }//dendfor1
//	}//endwhile
	//finenum=k;
	//cout<<k;
	  cout<<endl;
	cout<<finenum<<endl;
}
void Slice(int v[1])//int v[4];int d[20][20],

{
//	v[0]=4;
    Twosteps_slice(v,1,Kind1,1);   //第一步遍历d,
 
/*  for(int w=0;w<finenum;finenum++)
  {
    s[w]=first_visited[w]; 
	
  }
*/
  Twosteps_slice(first_visited,finenum-1,Kind2,2);   //第二步遍历d,
  //for(w=0;w<finenum;finenum++)
  //{
    //cout<<first_visited[w]; 
//	cout<<finenum;
	
 // }
}



void main(void)
{
 int i,j;
 for(i=0;i<20;i++)
	 for(j=0;j<20;j++)
	    d[i][j]=-1;
 //部分赋值
 d[1][0]=4;
 d[2][0]=5;
 d[2][1]=6;
 d[3][0]=4;
 d[7][1]=5;
 d[4][2]=6;
 d[8][3]=6;
 d[5][4]=7;
 d[6][4]=3;
 d[6][5]=2;
 d[9][6]=1;
int v[1];
v[0]=4;
//v[1]=2;
//v[2]=0;
//v[3]=1;
//Twosteps_slice(d,v,1,Kind1,1);
//函数调用
 Slice(v);//,4dd,
//Twosteps_slice(d,first_visited,finenum-1,Kind2,2);   //第二步遍历

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -