盈利分配 方格计算
来源:互联网 发布:淘宝怎么打电子发票 编辑:程序博客网 时间:2024/04/30 15:00
13题:
题目:
在一个n*m的方格中,m为奇数,放置有n*m个数,如图4-17所示。方格中间下方有一个人,此人可以按照5个方向前进但不能越出方格,如图4-18所示。
图 4-17 方格
人每走过一个方格必须取此方格中的数。要求找到一条从底到顶的路径,使其数相加之和为最大。输出最大和的值。
设计思想:通过根据导数第一排的数据和行走方式,倒推出导数第二排的最大可能行走结果,依次类推,循环查找,直到第一排数据。再根据行人坐在位置和行走方向,找到五个方向中最大一个值。反向递推,找到行走路径。
效果截图:
代码:
14题:
题目:某工业生产部门根据国家计划的安排,拟将某种高效率的5台机器,分配给所属的A、B、C3个工厂,各个工厂的获得这种机器后,可以为国家盈利如表所示,问:这4台机器如何分配给各个工厂,才能是国家盈利最大?
盈利表
S A BC
0 0 00
1 3 54
2 7 106
3 9 1111
4 12 1112
5 13 1112
其中:第一列S为机器台数,A、B、C列为3个工厂在拥有不同台数的机器时的盈利值。
设计思想:设计A[6] B[6] C[6]三个数组,分别存储对应盈利值。先求出n个机器在A、B分布的最佳盈利情况,并用AB[6]保存,再求出ABC[6]最佳的赢利情况。并分别算出对应的A、B、C所需要的台数。
效果截图:
代码:
题目:
在一个n*m的方格中,m为奇数,放置有n*m个数,如图4-17所示。方格中间下方有一个人,此人可以按照5个方向前进但不能越出方格,如图4-18所示。
图 4-17 方格
人每走过一个方格必须取此方格中的数。要求找到一条从底到顶的路径,使其数相加之和为最大。输出最大和的值。
设计思想:通过根据导数第一排的数据和行走方式,倒推出导数第二排的最大可能行走结果,依次类推,循环查找,直到第一排数据。再根据行人坐在位置和行走方向,找到五个方向中最大一个值。反向递推,找到行走路径。
效果截图:
代码:
/*设计思想:通过根据导数第一排的数据和行走方式,倒推出导数第二排的最大可能行走结果,依次类推,循环查找,直到第一排数据。再根据行人坐在位置和行走方向,找到五个方向中最大一个值。反向递推,找到行走路径。*/#include<stdio.h>int a[6][7] = {{16 , 4 , 3 ,12 ,6, 0 ,3},{4 , -5 , 6 , 7 , 0 , 0 , 2},{6 ,0 , -1 , -2, 3, 6 ,8},{5 , 3, 4 ,0 , 0 , -2 , 7},{-1 , 7 , 4 , 0 , 7 , -5 , 6},{0 ,-1 , 3 , 4 , 12 , 4 , 2}};int findpath(int a[6][7] , int n , int m , int &item );int main(void){ int n = 6; int m = 7; int b[6][7] ;/* for(int i = 0 ; i < 6 ; i++) { for(int j = 0 ; j < 7 ;j++) { b[i][j] = a[i][j] ; printf("%d\t",b[i][j]); } printf("\n"); }*/ //printf("-----------------------------------------------\n"); int item ; int best = findpath( a , n , m , item ); printf("最大值是:%d\n",best); //int k = item ; //printf("path:\n"); //printf("%d %d\n",n-1 , item); printf("the path is:"); for(int i = n-2 ; i >= 0 ; i-- ) { printf("(%d,%d) --> ",i+1 , item); best = best-b[i+1][item]; for(int j = item-2 ; j <= item+2 ; j++) { if(j < 0) continue ; if(j >= m) continue; if(a[i][j] == best) { item = j ;break; } } } printf("(%d %d)\n",i+1 , item); return 0;}int findpath(int a[6][7] , int n , int m ,int &item ){ int best ; for(int i = 1 ; i < n; i++) { for(int j = 0 ; j < m ; j++) { best = -10; for(int k = j-2 ; k <= j+2 ; k++) { if(k < 0) { continue ; } else if( k >= m) { break; } else { if(a[i-1][k] > best) { best = a[i-1][k]; } } } a[i][j] = a[i][j] + best ; } } int k = m/2 - 2 ; for( int j = m/2 - 1 ; j <= m/2 + 2 ; j++) { if(a[n-1][k] < a[n-1][j])k = j ;elsecontinue ; } // printf("%d\n",a[n-1][k]);/* for(i = 0 ; i < n; i++) { for(int j = 0 ; j < m ; j++) { printf("%d\t",a[i][j]); } printf("\n"); } */ item = k; return a[n-1][k]; }
14题:
题目:某工业生产部门根据国家计划的安排,拟将某种高效率的5台机器,分配给所属的A、B、C3个工厂,各个工厂的获得这种机器后,可以为国家盈利如表所示,问:这4台机器如何分配给各个工厂,才能是国家盈利最大?
盈利表
S A BC
0 0 00
1 3 54
2 7 106
3 9 1111
4 12 1112
5 13 1112
其中:第一列S为机器台数,A、B、C列为3个工厂在拥有不同台数的机器时的盈利值。
设计思想:设计A[6] B[6] C[6]三个数组,分别存储对应盈利值。先求出n个机器在A、B分布的最佳盈利情况,并用AB[6]保存,再求出ABC[6]最佳的赢利情况。并分别算出对应的A、B、C所需要的台数。
效果截图:
代码:
<pre name="code" class="cpp">#include<stdio.h>int main(void){int A[6] = {0, 3, 7, 9, 12, 13};int B[6] = {0, 5, 10, 11, 11 ,11};int C[6] = {0 , 4 , 6 ,11 , 12 , 12}; int AB[6] = {0} ;int ABC[6] = {0} ;int sign[2][6] = {0};for(int i = 0 ; i < 6 ; i++){ int best = 0; for(int j = 0 ; j < i ; j++) { if(best < (A[j] + B[i-j])){best = A[j] + B[i-j] ;sign[0][i] = j;} AB[i] = best ; } // printf("%d %d\n",sign[0][i] , AB[i] );} //printf("-------------------------------------------------\n"); for(i = 0 ; i < 6 ; i++){ int best = 0; for(int j = 0 ; j < i ; j++) { if(best < (AB[j] + C[i-j])){best = AB[j] + C[i-j] ;sign[1][i] = j;} ABC[i] = best ; } //printf("%d %d\n",sign[1][i] , ABC[i] );} printf("the max profit is %d\n",ABC[5]); printf("need A is %d\n",sign[0][sign[1][5]]); printf("need B is %d\n",sign[1][5]-sign[0][sign[1][5]]); printf("need C is %d\n",5-sign[1][5]); //printf("") return 0;}
0 0
- 盈利分配 方格计算
- 计算股票最佳盈利
- 云计算盈利艰难 或成下一个科技泡沫
- poj 2506-计算方格摆放的方法数
- 2013年云计算盈利时点将出现 行业指导意见或出台
- 服装行业唛架分配计算系统
- sizeof计算栈中分配的大小
- 动态计算分配及获取线程数
- Kafka分区分配计算(分区器Partitions)
- 盈利预警
- 盈利相关
- 互联网盈利
- 网站盈利
- MDX常见计算方法(百分比/分配/平均值/基于时间的计算)
- MDX常见计算方法(百分比/分配/平均值/基于时间的计算)
- C语言中结构体大小计算即存储分配
- C语言中结构体大小计算即存储分配
- sizeof为什么不能计算被动态分配的数组
- git 将本地项目添加到Github
- 1008. 数组元素循环右移问题 (20)
- 解决Xutils 的框架问题retry error, curr request is null
- 2014年第五届蓝桥杯C/C++程序设计本科B组省赛
- 文章标题
- 盈利分配 方格计算
- 创建动态的表格
- Flask Web项目架构图
- POI操作excel表格
- 接龙游戏 [Codevs 1051]
- 2016年1月24日的比赛总结
- 转载_推荐!国外程序员整理的 C++ 资源大全
- Android-onInterceptTouchEvent()和onTouchEvent()总结
- Android manifest文件中的标签详细介绍