1 条题解

  • 0
    @ 2025-10-10 15:45:58

    C++ :

    #include<iostream>
    using namespace std;
    
    int ans;
    
    void dfs(int m){
    	
    	int i;
    	ans++;
    
    	//m变成1的时候不进入循环跳出递归 
    	for(i=1;i<=m/2;i++)
    		dfs(i);
    }
    
    int main(){
    	
    	int n;
    	cin>>n;
    	dfs(n);
    	cout<<ans - 1;
    	return 0;
    }
    
    

    Java :

    import java.util.Scanner;
    
    public class Main {
    
        private static int[] array=new int[200];//存储计算过的值
    
        public static void main(String[] args) {
            Scanner in=new Scanner(System.in);
            int n=in.nextInt();//要分解的数
            array[1]=1;//设置初值
            System.out.println(Fun(n)-1);
            in.close();
        }
    
        public static int Fun(int n) {
            int result=1;
            if(array[n]>0)  return array[n];
            for ( int i = 1; i <= n/2 ; i++ ) {
                result +=Fun(i);
            }
            array[n]=result;
            return result;
        }
    
    }
    
    • 1

    信息

    ID
    287
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    2
    已通过
    1
    上传者