纯C语言:40磅砝码称重源码
2014-01-03 00:11
375 查看
#include<stdio.h> int get(int weight,int i,int j,int k,int l) { int p1,p2,p3,p4; for(p1=-1;p1<=1;p1++) { for(p2=-1;p2<=1;p2++) { for(p3=-1;p3<=1;p3++) { for(p4=-1;p4<=1;p4++) { if(i*p1+j*p2+k*p3+l*p4==weight) return 1; } } } } return 0; } void main() { int i,j,k,l,weight; printf("40磅的砝码分解成四种不同重量的砝码,可有为以下的方案来实现可称出40磅内不同重量的物体:\n"); for(i=1;i<10;i++) { for(j=i+1;j<20-i;j++) { for(k=j+1;k<30-i-k;k++) { for(l=k+1;l<=40-i-j-k;l++) { if(i+j+k+l==40) { for(weight=1;weight<=40;weight++) { if(!get(weight,i,j,k,l)) break; } if(weight >40) printf("%d %d %d %d\n",i,j,k,l); } } } } } } #include<iostream.h> int getweight(int i,int j,int k,int s,int w) { int x1,x2,x3,x4; for(x1=-1;x1<=1;x1++) for(x2=-1;x2<=1;x2++) for(x3=-1;x3<=1;x3++) for(x4=-1;x4<=1;x4++) if(x1*i+x2*j+x3*k+x4*s==w) return 1; return 0; } int justify(int i,int j,int k,int s) { int w; for(w=1;w<=40;w++) { if(!getweight(i,j,k,s,w)) return 0; } return 1; } void pieces() { int i,j,k,s; for(i=1;i<40;i++) for(j=i+1;j<40-i;j++) for(k=j+1;k<40-i-j;k++) for(s=k+1;s<=40-i-j-k;s++) if(i+j+k+s==40) if(justify(i,j,k,s)) cout<<i<<" "<<j<<" "<<k<<" "<<s<<endl; } void main() { pieces(); }
相关文章推荐
- 动态规划-砝码称重问题
- 三星uboot1.1.6源码分析——start.s(9)--C语言部分(3)
- 2144 砝码称重 2
- C语言UDP传输系统源码
- 动态规划---砝码称重问题
- 栈的C语言实现源码
- MQTT 嵌入式 C语言 客户端libemqtt源码解析
- 操作系统模拟内存管理实验,C语言链表实现,附源码
- f013: 砝码称重 (多重背包化01背包) + 南理工:砝码称重(贪心)
- 各种内排序算法源码汇总--c语言
- 纯C语言:分治假币问题源码分享
- 51NOD 1449 砝码称重
- c语言编程 有5个砝码 分别是1,3,9,27,81 可以组合成1--121之间任意整数
- 51nod1449 砝码称重
- Mongoose源码分析之--简单的服务器搭建(C语言)
- C语言字符串处理函数源码
- 【u204】高级砝码称重
- C语言递归实现N宫格(九宫格)源码
- 51nod 1449 砝码称重 (二进制思想)
- C编程获取指定网卡网络数据包并分析(附C语言源码)