文件需要在Visual C++ 6.0环境下运行
文件包含:
VRE3.0安装说明
VRE3.0联发科技首届校园软件大赛专用版安装文件
VRE IDE入门指南
VRE图形库开发指南
VRE开发者FAQ
下载地址:http://www.eepw.com.cn/event/action/mediatek2010/material.html
#include<stdio.h>
#include<stdlib.h>
#include<sys/timeb.h>
#define MAX 50   //不宜过大
int *a,rear,sum,count,n;
int prin()
{
 if(rear<0)return 0;
 printf("Answer%4d:    %d=",count++,n);
 for(int i=0;i<rear;i++)//<int i=0;>放进for里面 用C与C++程序设计学习与实验系统 2010编译会报错
  printf("%d+",a[i]);
 printf("%d\n",a[rear]);//printf("%d\n",a[i]);//在Dev C++中会报错 
 return 1;
}
int judge(int m)
{
 if(sum+m>n)  //分解失败
 {
  rear--;
  sum-=a[rear];
  return 1;
 }
 else if(sum+m==n)//分解成功
 {
  a[rear]=m;
  prin();
  rear--;
  sum-=a[rear];
  return 1;
 }
 else    //可继续分解
 {
  a[rear++]=m;
  sum+=m;
  return 0;
 }
}
void processing(int m)
{
 int i=m;
 while(i<=n&&rear>=0)
 {
  if(judge(i))
  {
   i=a[rear]+1; //processing(i);
  }
    }
}
int initializing()
{
 if(n<1||n>MAX)
 {
  printf("The integer you inputed just now is ineffective!\n");
  return 1;
 }
 if(!(a=(int*)malloc(n*sizeof(int))))return 1;//忘记乘以n当n>6就会出现错误 
 for(int i=0;i<n;i++)a[i]=0;
 sum=rear=0;
 count=1;
 return 0;
}
int main()
{
 timeb t1,t2;//结构体
 long t;
 printf("请输入要分解的正整数{N<=50}!\nN=");//MAX
 scanf("%d",&n);
 if(initializing())return 0;
 printf("\tAFTER PROCESSING!\n");
 ftime(&t1);//求得当前时间
 processing(1);
 ftime(&t2);//求得当前时间
 t=(t2.time-t1.time)*1000+(t2.millitm-t1.millitm);//t.time以秒为单位,t.millitm以毫秒为单位
 printf("The integer \"%d\" can be devided into <%d> equations!\nThe cost of time is %ld millitm(毫秒)!\n",n,count-1,t);
    system("pause");
 return 1;
}
| 有奖活动 | |
|---|---|
| 硬核工程师专属补给计划——填盲盒 | |
| “我踩过的那些坑”主题活动——第002期 | |
| 【EEPW电子工程师创研计划】技术变现通道已开启~ | |
| 发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
| 【EEPW在线】E起听工程师的声音! | |
| 高校联络员开始招募啦!有惊喜!! | |
| 【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
| 送您一块开发板,2025年“我要开发板活动”又开始了! | |