using System;
using System.Collections;namespace 条件选数字
{
/// <summary>
/// condition1 的摘要说明。
/// </summary>
public class condition1
{
int[]data=new int[6];//记录所考虑的六个数;
int[][] dataofsplitting=new int[8][];//存放8个分区中的数据;
int[] parameter=new int[4];//存放各个小条件中的参数;
ArrayList myarraylist=new ArrayList();//记录6个数所在分区区号,此时可以出现重复区号;
ArrayList temp=new ArrayList();//记录6个数所在分区区号,不允许出现重复区号;
public condition1(int[]data,int[][]dataofsplitting,int[]parameter)
{
this.data=data;
for(int i=0;i<8;i++)
this.dataofsplitting[i]=new int[15];
this.dataofsplitting=dataofsplitting;
this.parameter=parameter;
}
public bool checkcondition1()
{
baseofcondition();
if(!checkcondition11())
return false;
else if(!checkcondition12())
return false;
else if(!checkcondition13())
return false;
else
return true;
}
private void baseofcondition()
{
int i,j,k;
for(k=0;k<data.Length;k++)
{
for(i=0;i<8;i++)//dataofsplitting中的数据不出现重复
{
for(j=0;j<dataofsplitting[i].Length;j++)
{
if(dataofsplitting[i][j]==data[k])
{
myarraylist.Add(i);
goto next;
}
}
}
next:;
}
}
private bool checkcondition11()
{
int i,j;
bool flag;
int numofsplitting=1;
for(i=0;i<myarraylist.Count-1;i++)
{
flag=false;
for(j=i+1;j<myarraylist.Count;j++)
{
if((int)myarraylist[j]==(int)myarraylist[i])
{
flag=true;
break;
}
}
if(!flag)
{
numofsplitting++;
temp.Add(myarraylist[i]);
}
}
temp.Add(myarraylist[myarraylist.Count-1]);
if(parameter[0]<=numofsplitting&&numofsplitting<=parameter[1])
return true;
else
return false;
}
private bool checkcondition12()
{
int i,j;
int num;//每个数在总共所在分区数
for(i=0;i<myarraylist.Count-2;i++)
{
num=1;
for(j=i+1;j<myarraylist.Count;j++)
{
if((int)myarraylist[j]==(int)myarraylist[i])
num++;
}
if(num>3)
return false;
}
return true;
}
private bool checkcondition13()
{
int i,j;
int sumelement=0;
for(i=0;i<temp.Count;i++)
{
for(j=0;j<dataofsplitting[(int)temp[i]].Length;j++)
{
if(dataofsplitting[(int)temp[i]][j]!=0)
sumelement++;
}
}
if(parameter[2]<=sumelement&&sumelement<=parameter[3])
return true;
else
return false;
}
}
}
我想在这个程序每循环了一次之后就记录下parameter和data的情况,请问改如何加入语句?