整数拆分问题(用堆栈方法) 谢谢
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_INTEGER 20
/*
整数拆分:输入一个1--20之间的整数,将其拆分成多个整数的和
例如:
5 = 1 + 1 + 1 + 1 + 1
5 = 2 + 1 + 1 + 1
5 = 2 + 2 + 1
5 = 3 + 1 + 1
5 = 3 + 2
5 = 4 + 1
5 = 5
*/
int main()
{
//整数拆分时需要用到的堆栈
int sumStack[MAX_INTEGER]; //各个加数的和的堆栈
int numStack[MAX_INTEGER]; //各个加数的堆栈
int top; //栈顶
int nn;
int ii;
while ( 1==1 )
{
for ( ii=0; ii<MAX_INTEGER; ii++ )
{
sumStack[ii]=0;
numStack[ii]=0;
}
top=0;
nn=0;
printf("nn = ");
scanf("%d", &nn);
if ( (nn<1) || (nn>MAX_INTEGER) )
return 1;
//缺失的代码
printf("end\n");
}
return 0;
}
/////////////////////////////

...全文
相关推荐
Recursion:我的第一个递归代码
基本情况是问题可以直接解答的情况,而递归情况则是将问题拆分为更小的子问题,然后继续调用自身处理这些子问题,直到遇到基本情况为止。二、递归的工作流程1. 函数或方法被调用。2. 检查是否存在基本情况。
不用标准库的简型printf
**堆栈管理**:标准`printf`会使用堆栈来存储中间结果,但裸机环境可能没有完善的堆栈机制。你需要自行管理缓冲区,避免内存溢出问题。
主题:Clojure的递归,数据驱动的模式匹配
**一、递归**在Clojure中,递归是解决许多问题的常见方法,尤其是对于处理树形结构或集合的算法。递归是指一个函数在其定义中调用自身的过程。
SQLSERVER2005 中树形数据的递归查询
其次,如果树形结构非常深,递归查询可能导致堆栈溢出错误。为了避免这些问题,可以考虑以下优化策略:1.
C程序代码优化的探讨.pdf
堆栈的优势**局部变量存储在堆栈上,可以快速地进行内存分配和释放。此外,当函数调用结束时,局部变量所在的内存会被自动释放,这有助于减少内存碎片问题,并且可以利用CPU缓存的特性提高访问速度。**3.


