📄 slice.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 + -