整数拆分 算法。
来源:互联网 发布:kindle怎么下软件 编辑:程序博客网 时间:2024/05/29 21:18
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <stdlib.h>
#include "stdio.h"
#define N 8
main(){
int i,j,s,sum;
int a[N];
int x;
long k=0;
x=2;
printf("%d=%d",N,N); //把独物的一种情况独立展示出来
//穷举法 计算
while(1){
k++; //通过K统计N个数组成的个数
if(k==s*N) break; //k超过统计的个数退出循环
s=1; //S来计算对应位的权
a[0]=k%N; //第1位的值
sum=a[0]; //通过sum累加,后面要与N做比较
if(a[0]==0) continue; //凡是位数上有0的跳过
for(i=1;i<N-1;i++) //通过循环第k种情况个其他位置的值应当是多少
{s*=N; //统计对应的权
a[i]=k/s%N; //计算第i位置的值
if(a[i]==0) break; //凡是位数上有0的跳过,注break这里是直接结束for循环进入while
sum+=a[i]; //累计a[i]的和
if (sum>N) continue; //如果累计的值超过N不必再继续后面。
if (i==x) x++; //x代表通计数字组成的个数且只能累增,后面少于组成个数就可以被筛选掉
// 如果组成的个数开始累增1了,x就做一下标识
if (i+1<x) continue; // 如果组成个数小于当前x则不必再继续后面。
if (sum==N) { //如果sum与N一直,则输出结果
printf("=");
for(j=0;j<i;j++)
printf("%d+",a[j]);
printf("%d",a[j]);
}
}
}
printf("="); //独特的另一种情况展示出来
for(i=0;i<N-1;i++)
printf("1+");
printf("1\n");
}
0 0
- 整数拆分 算法。
- 整数拆分 整合算法
- 算法练习--整数拆分为素数乘积
- 算法练习--整数拆分为素数乘积
- 算法回忆录:母函数解决整数拆分
- 整数拆分
- 整数拆分
- 整数拆分
- 整数拆分
- 整数拆分
- 整数拆分
- 整数拆分
- 整数拆分
- 拆分整数
- 整数拆分
- 整数拆分
- 整数拆分
- 整数拆分
- POJ 1088 滑雪
- 将Cocos2d-x从iOS平台移植到Android平台需要修改的地方
- Good Bye2015,Hello 2016
- Android动态广播添加权限
- hadoop安装包的目录结构
- 整数拆分 算法。
- 【leetcode题解】【M】【10】318. Maximum Product of Word Lengths
- 同源策略和跨域访问
- Linux设置普通用户无密码sudo权限
- Linux关闭防火墙、SELinux
- 关于android EditText去掉下滑线
- Hadoop的伪分布式搭建
- Android多点触控之——MotionEvent(触控事件)
- Introduction to Glide, Image Loader Library for Android, recommended by Google