代码编程算法问题:请问为什么过不了啊,代码如下

代码编程算法问题:

img

img


请问为什么过不了啊,代码如下:

#include <bits/stdc++.h>
using namespace std;
const int mod = 1e9 + 7;
int n;  
int dp[100005];

int main() {
    cin >> n;
    if (n == 1) {
        cout << 1 << endl;
        return 0;
    }
    dp[1] = 1;
    dp[2] = 1;
    for (int i = 3; i <= n; i++) {
        dp[i] = dp[i-1] * (i-1);
    }
    cout << dp[n] << endl;
}

结果没取模

img

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7502173
  • 这篇博客你也可以参考下:【排序算法】选择排序(详细代码)
  • 除此之外, 这篇博客: 根据伪代码编程实现随机位置次序选择算法。中的 根据伪代码编程实现随机位置次序选择算法。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    import java.util.Random;
    
    public class randomizedSelection {
        public static void main(String[] args){
            int[] A = {9,8,7,6,5,4,3,2,1};
            //下面中randomizedSelection(A, 0, A.length-1, 5)里的第四个参数,代表的是寻找该数组中排序后的第几个元素。所以,第四个参数的值不能超过数组的长度
            int result = randomizedSelection(A, 0, A.length-1, 5);
            System.out.println(result);
        }
    	//下面的代码跟快速排序的代码一样
        private static int partition(int[] A, int p, int r){
            int x = A[r];
            int i = p-1;
            for(int j = p; j<=r-1; j++){
                if(A[j]<=x){
                    int tmp = A[i+1];
                    A[i+1] = A[j];
                    A[j] = tmp;
                    i++;
                }
            }
            int t1 = A[i+1];
            A[i+1] = A[r];
            A[r] = t1;
            return i+1;
        }
    	//生成随机数并交换数组的最后一个值,与快速排序中的一样
        private static int randomizedPartition(int[] A, int p, int r){
            int random = (int) (Math.random() * ((r - p) + 1)) + p;
            int temp = A[random];
            A[random] = A[r];
            A[r] = temp;
            return partition(A, p, r);
        }
    	//下面就是与快速排序的区别,判定大小并选择性递归
        private static int randomizedSelection(int[] A, int p, int r, int k){
            int q = randomizedPartition(A, p, r);
            int x;
            if (k==q-p+1){
                x = A[q];
            }else if (k<q-p+1){
                x = randomizedSelection(A, p, q-1, k);
            }else{
                x=  randomizedSelection(A, q+1, r, k-(q-p+1));
            }
            return x;
        }
    }
    
    
    
    
  • 您还可以看一下 孙玖祥老师的图解数据结构与算法课程中的 汉诺塔问题代码实现小节, 巩固相关知识点