package tv;
import tool.*;
public class pro {
int s,sx,datanumber;
String[] data=new String[5000];
String[][] artist=new String[5000][100];
int[] number=new int[5000];
String[] dic=new String[5000];
double[] rate=new double[5000];
int dicnumber;
int[] point=new int[5000];
int[][] art=new int[5000][6];
double[] count=new double[5000];
double[] sol=new double[5];
double[] e=new double[5000];
public static void main(String[] args) {
pro test=new pro();
}
pro(){
catchartist sub=new catchartist();
sub.makedata();
artist=sub.artist;
number=sub.number;
datanumber=sub.datanumber;
dic=sub.dic;
dicnumber=sub.dicnumber;
catchrate sub2=new catchrate();
sub2.makedata();
rate=sub2.r;
for(s=1;s<dicnumber+1;s++){
point[s]=pp();
}
int dx;
String str;
for(s=1;s<datanumber+1;s++){
for(sx=1;sx<6;sx++){
str=artist[s][sx];
if(str==null)str="";
art[s][sx]=0;
for(dx=1;dx<dicnumber+1;dx++){
if(str.equals(dic[dx]))art[s][sx]=dx;
}
}
}
double c1;
int tx,delta;
for(delta=1;delta<10;delta++){
for(s=1;s<datanumber+1;s++){
c1=0;
for(sx=1;sx<6;sx++){
tx=art[s][sx];
if(tx>0)c1=c1+(6-sx)*point[tx];
}
count[s]=c1;
}
double[][] xx=new double[5000][3];
for(s=1;s<datanumber+1;s++){
xx[s][1]=1;
xx[s][2]=count[s];
}
ols sub4=new ols();
sub4.datanumber=datanumber;
sub4.number=2;
sub4.y=rate;
sub4.x=xx;
sub4.makedata();
sol=sub4.sol;
int n,tr;
double p1,p2,minp;
minp=0;
for(tr=1;tr<101;tr++){
n=play();
minp=9999;
sx=0;
for(s=1;s<dicnumber+1;s++){
p1=shuffle(n,s);
if(p1<minp)sx=s;
if(p1<minp)minp=p1;
}
int c3,c2;
c3=point[n];
c2=point[sx];
point[n]=c2;
point[sx]=c3;
}
System.out.println(minp+","+sol[1]);
}
for(s=1;s<dicnumber+1;s++){
System.out.println(dic[s]+","+point[s]);
}
}
int play(){
return (int)(dicnumber*Math.random())+1;
}
double shuffle(int s1,int s2){
int c1,s,sx,tx;
double[] count_p=new double[5000];
int txs;
for(s=1;s<datanumber+1;s++){
c1=0;
for(sx=1;sx<6;sx++){
tx=art[s][sx];
txs=0;
if(tx==s1)txs=s2;
if(tx==s2)txs=s1;
if(txs>0)tx=txs;
if(tx>0)c1=c1+(6-sx)*point[tx];
}
count_p[s]=c1;
}
double e1;
e1=0;
for(s=1;s<datanumber+1;s++){
e1=e1+(rate[s]-sol[1]-sol[2]*count_p[s])*(rate[s]-sol[1]-sol[2]*count_p[s]);
}
return e1;
}
int pp(){
int n;
n=(int)(10*Math.random())+1;
return n;
}
}
package tv;
public class ols {
int s,s1,s2;
int datanumber,number;
double x1;
double[][] a=new double[100][100];
double[] b=new double[100];
double[] y=new double[1000];
double[][] x=new double[1000][10];
double[] sol=new double[100];
void makedata(){
for(s1=1;s1<number+1;s1++){
for(s2=1;s2<number+1;s2++){
x1=0;
for(s=1;s<datanumber+1;s++){
x1=x1+x[s][s1]*x[s][s2];
}
a[s1][s2]=x1;
}
}
for(s1=1;s1<number+1;s1++){
x1=0;
for(s=1;s<datanumber+1;s++){
x1=x1+x[s][s1]*y[s];
}
b[s1]=x1;
}
double z;
for(s1=1;s1<number+1;s1++){
for(s2=1;s2<number+1;s2++){
z=a[s2][s1]/a[s1][s1];
if(s1==s2)z=0;
for(s=1;s<number+1;s++){
a[s2][s]=a[s2][s]-z*a[s1][s];
}
b[s2]=b[s2]-z*b[s1];
}
}
for(s1=1;s1<number+1;s1++){
sol[s1]=b[s1]/a[s1][s1];
}
}
}
最終更新:2014年04月25日 02:50