不锈钢砝码
50kg至1000kg不锈钢砝码
25公斤不锈钢砝码
20公斤不锈钢砝码
10公斤不锈钢砝码
不锈钢圆形砝码
不锈钢方形砝码
不锈钢锁型砝码
不锈钢挂钩砝码
不锈钢英磅砝码
不锈钢牛顿砝码
不锈钢C型砝码
标准砝码
单个砝码
套装砝码
增砣砝码
牛顿砝码
无磁砝码
有磁砝码
聚四氟砝码
JF1无磁砝码
钢制镀铬砝码
非标砝码
20克药典砝码/聚四氟砝码
张力夹砝码
线状砝码
液体比重天平用骑码
夹持砝码
方形砝码
吊环砝码
砝码
手提砝码
双钩砝码
单勾砝码
饼式砝码
英磅砝码
定做砝码
片状砝码
维权砝码
圆形砝码
定制链码
铜制砝码
砝码等级
E1级砝码
E2级砝码
F1级砝码
F2级砝码
M1级砝码
M2级砝码
M3级砝码
天平砝码
六等砝码
五等砝码
四等砝码
三等砝码
二等砝码
等砝码
铸铁砝码
钢砝码
5吨10吨型配重块
配重块
电梯试验砝码
铸铁增砣砝码
2吨铸铁砝码
锁型铸铁砝码
方型铸铁砝码
1000公斤铸铁砝码
500公斤铸铁砝码
200KG铸铁砝码
100公斤铸铁砝码
50公斤铸铁砝码
25公斤铸铁砝码
20公斤铸铁砝码
10公斤铸铁砝码
1-5kg小型铸铁砝码
锁式砝码
25公斤锁型不锈钢砝码
20kg锁型不锈钢砝码
10KG锁形不锈钢砝码
5公斤锁型不锈刚砝码
电子称校准砝码
地磅校验砝码
上海砝码厂家
天平校准砝码
电子天平校准砝码
天平检测砝码
量块/块规
陶瓷量块
卡尺专用量块0级1级2级
上海厂家平台电子秤
防爆称重仪表/防爆地磅
各类信号控制电子磅称
物联网平台电子称
手推移动式电子地磅秤
1吨至5吨小型地磅秤
名称:上海实润实业有限公司
电话:86-021-67866267
传真:86-021-67866263
联系人:江晓
手机:18217775671
地址:上海市松江区泗泾镇高技路655号2幢121号
邮编:201615
邮箱:314530281@qq.com
网站:www.21fama.com
  新闻中心 当前位置:首页 - 新闻中心


标准砝码算法设计与分析实验报告
点击次数:774 更新时间:2015-06-08

标准砝码算法设计与分析实验报告

  1. 实验内容

对于给定的n 种不同砝码,编程计算它们可以称出多少种不同的重量。

  1. 实验环境
    1. 数据输入

    zhanghaiyanginput.txt                        



  1. 编程环境

环境:Eclipse  3.1

语言:Java   

  1. 算法设计

算法分析,算法流程(关键算法必须有),设计内容(类结构设计)



  1. 程序说明

import java.io.BufferedReader;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileWriter;

import java.io.IOException;

import java.io.InputStreamReader;



public class FangMa {

       public static void main(String[] args) throws NumberFormatException,IOException {

              int sum[];//初始化称法数组

              int f[][];//二维数组,*行存放砝码重量二行放个数

        f=new int[3][3];

        int line=1;//文本读取的行控制变量

        int n=0;//砝码种数

        int s=0;//表识可称出的种称法

        int a=0,b=0,c=0,count=0;//循环变量和称法总数

     try{

            FileInputStream file=new FileInputStream("D:/data/zhanghaiyanginput.txt");//创建文本输入流对象

        BufferedReader  w = new BufferedReader(new InputStreamReader(file));//读取数据流缓存区间

        String tempString =null;//存放每行读出的字符串

        while((tempString = w.readLine()) != null){

               if(line==1){ n=Integer.parseInt(tempString);//读出*行的字符并转换成砝码种数

                    }

               if(line==2){

                      String str[] = tempString.split(",");//安“,"将字符串划分成字符数组元素

                      for(int i=0;i<n;i++){f[0][i]=Integer.parseInt(str[i]);//将字符数组元素放入二维数组中

                      }}

             if(line==3){

                    String str[] = tempString.split(",");

                     for(int i=0;i<n;i++){f[1][i]=Integer.parseInt(str[i]);

               }}

               line++;

        }

     }catch (FileNotFoundException e) {

       }

     sum=new int[20];

     for( a=0;a<=f[1][0];a++){

            for(b=0;b<=f[1][1];b++){

                   for(c=0;c<=f[1][2];c++){

                          s=a*f[0][0]+b*f[0][1]+c*f[0][2];//计算称法

                          sum[s]=s;

                   }

            }

     }

     for(int j=0;j<20;j++){

            if(sum[j]!=0)

     }

     try{

            FileWriter w=new FileWriter("D:/data/zhanghaiyangoutput.txt");//创建输出文件

            w.write("共有"+count+"种称法");

            w.close();

     }catch(Exception e){}

    

}

}import java.io.BufferedReader;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileWriter;

import java.io.IOException;

import java.io.InputStreamReader;



public class FangMa {

       public static void main(String[] args) throws NumberFormatException,IOException {

              int sum[];//初始化称法数组

              int f[][];//二维数组,*行存放砝码重量二行放个数

        f=new int[3][3];

        int line=1;//文本读取的行控制变量

        int n=0;//砝码种数

        int s=0;//表识可称出的种称法

        int a=0,b=0,c=0,count=0;//循环变量和称法总数

     try{

            FileInputStream file=new FileInputStream("D:/data/zhanghaiyanginput.txt");//创建文本输入流对象

        BufferedReader  w = new BufferedReader(new InputStreamReader(file));//读取数据流缓存区间

        String tempString =null;//存放每行读出的字符串

        while((tempString = w.readLine()) != null){

               if(line==1){ n=Integer.parseInt(tempString);//读出*行的字符并转换成砝码种数

                    }

               if(line==2){

                      String str[] = tempString.split(",");//安“,"将字符串划分成字符数组元素

                      for(int i=0;i<n;i++){f[0][i]=Integer.parseInt(str[i]);//将字符数组元素放入二维数组中

                      }}

             if(line==3){

                    String str[] = tempString.split(",");//三行是读取每种砝码对应的个数

                     for(int i=0;i<n;i++){f[1][i]=Integer.parseInt(str[i]);

               }}

               line++;

        }

     }catch (FileNotFoundException e) {

       }

     sum=new int[20];

     for( a=0;a<=f[1][0];a++){

            for(b=0;b<=f[1][1];b++){

                   for(c=0;c<=f[1][2];c++){

                          s=a*f[0][0]+b*f[0][1]+c*f[0][2];//计算称法

                          sum[s]=s;

                   }

            }

     }

     for(int j=0;j<20;j++){

            if(sum[j]!=0)

     }

     try{

            FileWriter w=new FileWriter("D:/data/zhanghaiyangoutput.txt");//创建输出文件

            w.write("共有"+count+"种称法");

            w.close();

     }catch(Exception e){}

    

}

}


  1. 算法复杂性分析

针对具体算法,分析复杂性。该部分内容要有过程说明。


 for( a=0;a<=f[1][0];a++){

         for(b=0;b<=f[1][1];b++){

            for(c=0;c<=f[1][2];c++){

                s=a*f[0][0]+b*f[0][1]+c*f[0][2];//计算称法

                sum[s]=s;

            }

         }

     }

此处三重循环,循环的总次数位a*b*c


     for(int j=0;j<20;j++){

         if(sum[j]!=0)

     }

此处循环的次数为数组的长度


综上所述,所以复杂度为a*b*c



  1. 实验结果
    1. 输入参数


*行为砝码种类的个数

二行为不同重量的砝码

三行为各个砝码的个数



  1. 输出结果

   输出可称出重量的总数


  1. 实验总结

  关键算法为:

for( a=0;a<=f[1][0];a++){

         for(b=0;b<=f[1][1];b++){

            for(c=0;c<=f[1][2];c++){

                s=a*f[0][0]+b*f[0][1]+c*f[0][2];//计算称法

                sum[s]=s;

            }

         }

     }

  此关键算法具有定的局限性,它仅是在知道不同重量的砝码个数n确定的前提下设计循环的层数的,当n很的时候就显得复杂了,也不好简写成其他的代码,比较麻烦,并且复杂度也是成指数增长的,zui的复杂度可达m^n(m为每个不同重量的砝码的个数)

 砝码  http://www.21fama。。com/

标准砝码

 
公司首页 | 公司简介 | 新闻中心 | 联系我们
GoogleSitemap 网址:www.21fama.com 管理登陆 ICP备案号:沪ICP备11020366号-8
分享到:
021-67866267
点击这里给我发消息
点击这里给我发消息
点击这里给我发消息