int main(int argc, char *argv[]) { int t = 0, w = 0; int line = 0; int inputNum; int i, j, k, z; int minMaxBandwidth = 0; int maxBandwidth[128]; int lastBandwidth, tempPrice; int hasDev[128]; double maxBP, maxBPs[128*128]; scanf("%d", &t); for ( i = 0; i < t; i++) { scanf("%d", &denum); memset(devices, 0, sizeof(devices)); memset(maxBandwidth, 0, sizeof(maxBandwidth)); inputNum = 0; minMaxBandwidth = -1; for ( j = 0; j < denum; j++) { scanf("%d", &mi[j]); for ( k = 0; k < mi[j]; k++ ) { scanf("%d %d", &devices[j][k].bandwidth, &devices[j][k].price); } } comput(9999999, 0, 0); } }
void comput(int minb, int p, int dev) { int i, j; double tempBP; int tempb; for ( i = 0; i < mi[dev]; i++ ) { for ( j = 0; j < dev && i != 0; j++ ) { printf("\t\t"); } printf("%d %d %d\t", devices[dev][i].bandwidth, devices[dev][i].price, dev); if ( devices[dev][i].bandwidth < minb ) { tempb = devices[dev][i].bandwidth; } else { tempb = minb; } if ( dev >= denum-1 ) { tempBP = tempb*1.0/(p+devices[dev][i].price); if ( tempBP > maxAns ) { maxAns = tempBP; } printf(" %d:%.3lf\n", minb, maxAns); } else { comput( tempb, p+devices[dev][i].price, dev+1); } } return; }
void testNetwork(){ struct _finddata_t files; int File_Handle; int right=0,i,j,check; char test[100],tem[100],log[100]; printf("请输入您想测试的字体 \n"); scanf("%s",test); strcat(test," test/"); printf("\n"); while (test[0]!='0'){ tem[0]='\0'; mycpy(tem,test); strcat(test,"*.txt"); File_Handle = _findfirst(test,&files); if(File_Handle==-1) { printf("文件目录不存在\n\n"); printf("请输入您想测试的字体 \n"); printf("请输入您想测试的字体 \n"); scanf("%s",test); strcat(test," test/"); printf("\n"); continue ; } Data = 0; e = 0; do{ mycpy(log,tem); FILE *fp ; if (files.name[0]=='c') {d_out[Data][0] = 0;d_out[Data][1] = 0;d_out[Data][2] = 0;} if (files.name[0]=='k') {d_out[Data][0] = 0;d_out[Data][1] = 0;d_out[Data][2] = 1;} if (files.name[0]=='l') {d_out[Data][0] = 0;d_out[Data][1] = 1;d_out[Data][2] = 0;} if (files.name[0]=='x') {d_out[Data][0] = 0;d_out[Data][1] = 1;d_out[Data][2] = 1;} if (files.name[0]=='z') {d_out[Data][0] = 1;d_out[Data][1] = 0;d_out[Data][2] = 0;} strcat(log,files.name); fp=fopen(log,"r"); for (i=0;i<216;i++) fscanf(fp,"%lf",&d_in[Data][i]); Data++; if (fp==NULL) printf("文件读取失败\n"); fclose(fp); }while(0==_findnext(File_Handle,&files)); Data--; _findclose(File_Handle); printf("读取%d个测试样本\n",Data); for (i=0;i<Data;i++) { comput(i); check=1; for (j = 0; j < Out; ++j) if (OutputData[j]!=d_out[i][j]) check=0; if (check!=1) e++; } printf("测试完成,共测试%d个样本,错误%d个,错误率%f。\n\n",Data,e,1.0*e/Data); printf("请输入您想测试的字体 \n"); scanf("%s",test); strcat(test," test/"); printf("\n"); continue ; } }
void testNetwork(){ struct _finddata_t files; int File_Handle; File_Handle = _findfirst("C:/Users/quheng/Desktop/bpnet/test/*.txt",&files); if(File_Handle==-1) { printf("文件目录不存在\n"); system("pause"); return 0; } Data=0; do{ char filepath[10000]="C:/Users/quheng/Desktop/bpnet/test/"; strcat(filepath,files.name); FILE *fp ; if (files.name[0]=='c') {d_out[Data][0] = 0;d_out[Data][1] = 0;d_out[Data][2] = 0;} if (files.name[0]=='k') {d_out[Data][0] = 0;d_out[Data][1] = 0;d_out[Data][2] = 1;} if (files.name[0]=='l') {d_out[Data][0] = 0;d_out[Data][1] = 1;d_out[Data][2] = 0;} if (files.name[0]=='x') {d_out[Data][0] = 0;d_out[Data][1] = 1;d_out[Data][2] = 1;} if (files.name[0]=='z') {d_out[Data][0] = 1;d_out[Data][1] = 0;d_out[Data][2] = 0;} fp=fopen(filepath,"r"); int i; for (i=0;i<216;i++) fscanf(fp,"%lf",&d_in[Data][i]); Data++; fclose(fp); }while(0==_findnext(File_Handle,&files)); Data--; _findclose(File_Handle); printf("读取%d个测试样本\n",Data); int right=0,i,j,check; for (i=0;i<Data;i++) { comput(i); check=1; for (j = 0; j < Out; ++j){ if (OutputData[j]!=d_out[i][j]) check=0; printf("%d ",OutputData[j]); } printf("\n"); if (check!=1) e++; } printf("测试完成,共测试%d个样本,错误%d个,错误率%f。\n",Data,e,1.0*e/Data); }
void trainNetwork(){ //训练神经网络 printf("开始训练神经网络\n"); int i,c=0,j; int check; do{ e=0; for (i = 0; i < Data; ++i){ comput(i); check=1; for (j = 0; j < Out; ++j) if (OutputData[j]!=d_out[i][j]) check=0; if (check!=1) e++; backUpdate(i); // printf("%d %d %d\n",OutputData[0],OutputData[1],OutputData[2]); // printf("%d %d %d\n\n\n",d_out[i][0],d_out[i][1],d_out[i][2]); } c++; printf("第%d次训练网络,误差精度为:%f\n",c,1.0*e/Data); }while(c<TrainC && 1.0*e/Data>0.001); printf("训练神经网络完毕,读取测试样本\n"); }
int main3( void ) { int ret = comput("431-5*+"); printf("4+(3-1)*5=%d\n", ret); return 0; }