递归之美

题目1描述

输入一个表达式(用字符串表示),求这个表达式的值。

保证字符串中的有效字符包括[‘0’-‘9’],‘+’,‘-’, ‘*’,‘/’ ,‘(’, ‘)’,‘[’, ‘]’,‘{’ ,‘}’。且表达式一定合法。

输入描述:

输入一个算术表达式

输出描述:

得到计算结果

示例1

输入

3+2*{1+2*[-4/(8-6)+7]}

输出

25
复制代码
#include <stdio.h>
#include <string.h>
#include <ctype.h>
 
int pos;
int compute(char *data)
{
    int stack[1000];
    int i, top = 0;
    int len;
    int num;
    char flag = '+';
    int rc = 0;
     
    len = strlen(data);
     
    while(pos < len){
        if(data[pos] == '{' || data[pos] == '[' || data[pos] == '('){
            pos++;
            num = compute(data);
        }
         
         
        while(pos < len && isdigit(data[pos])){
            num = num*10 + data[pos] - '0';
            pos++;
        }
        switch(flag){
            case '+':
                stack[top++] = num;
                break;
            case '-':
                stack[top++] = -num;
                break;
            case '*':
                stack[top-1] *= num;
                break;
            case '/':
                stack[top-1] /= num;
                break;
        }
        flag = data[pos];
        num = 0;
         
        if(data[pos] == '}' || data[pos] == ']' || data[pos] == ')'){
            pos++;
            break;
        }
        pos++;
    }
     
    for(i=0; i<top; i++)
    {
        rc += stack[i];
    }
    return rc;
}
 
 
int main(void)
{
    char data[1000];
     
    scanf("%s", data);
     
    int rc = compute(data);
     
    printf("%d", rc);
     
    return 0;
}
复制代码

 

题目2描述

请计算n*m的棋盘格子(n为横向的格子数,m为竖向的格子数)沿着各自边缘线从左上角走到右下角,总共有多少种走法,要求不能走回头路,即:只能往右和往下走,不能往左和往上走。

输入描述:

每组样例输入两个正整数n和m,用空格隔开。(1≤n,m≤8)

输出描述:

每组样例输出一行结果

输入

2 2

1 2

输出

6

3

复制代码
#include <iostream>

using namespace std;

int func(int m, int n) {
    if (m == 0 || n == 0) {
        return 1;
    }
    return func(m, n - 1) + func(m - 1, n);
}
int main() {
    int m, n;
    while (cin >> m >> n) {
        cout << func(m, n) << endl;
    }

    return 0;
}
复制代码

 

posted @   流水灯  阅读(116)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
点击右上角即可分享
微信分享提示