试验报告二分覆盖问题.docx

上传人:b****7 文档编号:9024643 上传时间:2023-02-02 格式:DOCX 页数:16 大小:83.96KB
下载 相关 举报
试验报告二分覆盖问题.docx_第1页
第1页 / 共16页
试验报告二分覆盖问题.docx_第2页
第2页 / 共16页
试验报告二分覆盖问题.docx_第3页
第3页 / 共16页
试验报告二分覆盖问题.docx_第4页
第4页 / 共16页
试验报告二分覆盖问题.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

试验报告二分覆盖问题.docx

《试验报告二分覆盖问题.docx》由会员分享,可在线阅读,更多相关《试验报告二分覆盖问题.docx(16页珍藏版)》请在冰豆网上搜索。

试验报告二分覆盖问题.docx

试验报告二分覆盖问题

实验报告——二分覆盖问题

1.问题描述和分析

问题描述:

二分图是一个无向图,它的n个顶点可分为集合

A和集合B,且同一集合中的任意两个顶点在图中无边相连。

G=(V,E)

V=ABAB=

E={(Vi,Vj),ViA,VjB}

覆盖:

A’是A的一个子集,它使的B中的每个顶点都至少与A

中的一个顶点相连,称A‘是B的覆盖,A’中的顶点个数定义

为覆盖的大小。

2.实现环境和运行平台

通过EditPlus编写程序,再JDK上运行

在文件目录下,编译javaccover.java

运行javacover

3.测试情况

输入A类和B类个数;

A类和B类中相联系的用“1”表示,无联系的用“0”表示;点击“确定”进行二分覆盖,

“退出”返回上一级界面。

“OK”表示最终A和B类连接的情况。

4.源码

importjava.awt.*;

importjava.awt.event.*;

importjava.util.*;

importjavax.swing.*;

importjavax.swing.table.*;

 

importjavax.swing.ListSelectionModel;

importjavax.swing.event.ListSelectionListener;

importjavax.swing.event.ListSelectionEvent;

importjava.io.OutputStream;

 

//~~~~~主函数

publicclasscover

{

publicstaticvoidmain(String[]args)

{

Centerfframe=newCenterf();

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.show();

}

}

classCenterfextendsJFrameimplementsActionListener

{

privateJLabelnum,price;

privateJButtonenter;

privateJButtonExit;

privateJTextFieldTanum,Tbnum;

privateJPanelpanelnum,panelprice,panelctr;

privateStringanum,bnum;

privateintianum,ibnum;

publicCenterf()

{

setSize(250,250);

setTitle("二分覆盖");

num=newJLabel("请输入A集个数");

price=newJLabel("请输入B集个数");

enter=newJButton("确定");

Exit=newJButton("退出");

Tanum=newJTextField(5);

Tbnum=newJTextField(5);

panelnum=newJPanel();

panelnum.add(num);

panelnum.add(Tanum);

panelprice=newJPanel();

panelprice.add(price);

panelprice.add(Tbnum);

panelctr=newJPanel();

panelctr.add(enter);

panelctr.add(Exit);

Containercpanel=getContentPane();

cpanel.setLayout(newFlowLayout());

cpanel.add(panelnum,BorderLayout.NORTH);

cpanel.add(panelprice,BorderLayout.CENTER);

cpanel.add(panelctr,BorderLayout.SOUTH);

 

enter.addActionListener(this);

Exit.addActionListener(this);

}

publicvoidactionPerformed(ActionEventevent)//frame监听事件

{

if(event.getSource()==enter)

{

anum=Tanum.getText();

ianum=Integer.parseInt(anum);

bnum=Tbnum.getText();

ibnum=Integer.parseInt(bnum);

ZCenterfzframe=newZCenterf(ianum,ibnum);

zframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

zframe.show();

}

elseif(event.getSource()==Exit)

{

System.exit(0);

}

}

}

classZCenterfextendsJFrameimplementsActionListener

{

privateJButtonpr;

privateJButtonExit;

privateJPanelpanel;

privateCreatTabletb;

privateJScrollPanejsp;

privateintnum,col,contant;

privateinttotlecontant;

intselectedRow=0;

 

publicZCenterf(intanum,intbnum)

{

num=anum;

setSize(500,250);

setTitle("二分覆盖");

pr=newJButton("确定");

Exit=newJButton("退出");

panel=newJPanel();

panel.add(pr);

panel.add(Exit);

pr.addActionListener(this);

Exit.addActionListener(this);

col=bnum;

tb=newCreatTable();

jsp=tb.MakeTable(num,col);

Containercpanel=getContentPane();

cpanel.add(panel,BorderLayout.SOUTH);

cpanel.add(jsp,BorderLayout.CENTER);

}

publicvoidactionPerformed(ActionEventevent)

{

if(event.getSource()==Exit)//~~~监听退出事件

{

hide();

}

elseif(event.getSource()==pr)//~~~监听确定事件

{

tb.method(num,col);

}

}

}

 

classCreatTableimplementsListSelectionListener

{

AbstractTableModeltm;

Vectorvect;//声明一个向量对象

privateJTabletab;

privateString[]title,kch;

privateObject[][]obj;

privateString[][]str;

privateJScrollPanejsp;

privateint[]count;

privateint[]flag;

privateintrow,col,selectedRow=0;

publicCreatTable()

{

}

publicJScrollPaneMakeTable(intarow,intacol)//制作table表

{

try

{

row=arow;

intbcol=acol;

col=acol+1;

str=newString[row][col];

title=newString[col];//table表头

title[0]="A类/B类";

for(inti=1;i<=bcol;i++)

{

intn=row+i;

title[i]=Integer.toString(n);

}

obj=newObject[row][col];

for(inti=0;i

{

obj[i][0]=Integer.toString(i+1);

}

tm=newAbstractTableModel()

{

publicintgetColumnCount()//取得表格列数

{

returntitle.length;

}

publicintgetRowCount()//取得表格行数

{

returnrow;

}

publicObjectgetValueAt(intarow,intacolumn)//取得单元格中的属性值

{

returnobj[arow][acolumn];

}

publicStringgetColumnName(intcolumn)//设置表格列名

{

returntitle[column];

}

publicbooleanisCellEditable(intarow,intcolumn)

{

returntrue;

}//设置单元格可编辑

publicvoidsetValueAt(Objectaobj,intarow,intacolumn)//设置单元格中的属性值

{

obj[arow][acolumn]=aobj;

}

};

tm.fireTableDataChanged();//更新表格,显示向量vect的内容

tab=newJTable(tm);

intv=ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED;

inth=ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED;

jsp=newJScrollPane(tab,v,h);

tab.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

ListSelectionModelrowSM=tab.getSelectionModel();

rowSM.addListSelectionListener(this);

}

catch(NullPointerExceptionsqle){

System.out.println("[tgetconnectionNullPointerException]:

"+sqle.getMessage());

}

returnjsp;

}

publicvoidvalueChanged(ListSelectionEvente)//table监听

{

if(e.getValueIsAdjusting())

return;

ListSelectionModellsm=(ListSelectionModel)e.getSource();

if(!

(lsm.isSelectionEmpty()))

{

selectedRow=lsm.getMinSelectionIndex();

}

}

 

publicObjectgetvalue(intarow,intacol)//取得单元格中的属性值

{

returnobj[arow][acol];

}

publicvoidsetvalue(intarow,intacol)

{

obj[arow][acol]="ok";

tm.fireTableDataChanged();

}

 

publicObject[][]update()

{

tm.fireTableDataChanged();//更新表格,显示向量vect的内容

tab=newJTable(tm);

for(inti=0;i

{

for(intj=0;j

{

obj[i][j]=getvalue(i,j);

}

}

returnobj;

}

publicintover()

{

intoflag=1;

for(inti=0;i

{

if(flag[i]==0)oflag=0;

}

returnoflag;

}

publicvoidmethod(intarow,intacol)

{

intk,kt;

k=0;

intar,ac,n1;

ar=arow;

ac=acol;

flag=newint[ac];

count=newint[ar];

table=newint[ar][ac];

while(over()==0)

{

for(inti=0;i

{

for(intj=1;j<=ac;j++)

{

if(String.valueOf(obj[i][j]).equals("1"))

{

count[i]++;

}

}

}

intmax=count[0];

for(inti=0;i

{

if(count[i]>max)

max=count[i];

}

for(kt=0;kt

{

if(count[kt]==max)

{k=kt;}

}

System.out.println(k);

for(inti=1;i<=ac;i++)

{

if(Integer.parseInt(String.valueOf(obj[k][i]))==1)

{intlk;

lk=i;

setvalue(k,lk);

flag[i-1]=1;

}

}

}

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1