【十二题解】 | #杨辉三角的变形#

杨辉三角的变形

http://www.nowcoder.com/practice/8ef655edf42d4e08b44be4d777edbf43

用动态规划写完了发现是找规律的题,还是把代码发上来把,顺带问一句,如果用动态规划的话这道题是不是不能用一维数组

#include<stdio.h>

int main(){

 int number;
 while( scanf("%d", &number) != EOF){
       
 int all = number*2-1;
 int **dp = (int*)malloc(sizeof(int*)*number);
 for(int i=0; i<number; i++){
     dp[i] = (int*)malloc(sizeof(int)*all);
     memset(dp[i], 0, all*sizeof(int));
 }
 dp[0][all/2]=1;
 for(int i =1; i<number; i++){
     for(int j = 0; j<all; j++){
         if(j==0){
             dp[i][j]=dp[i-1][j]+dp[i-1][j+1];
         }
         else if(j==all-1){
             dp[i][j]=dp[i-1][j-1]+dp[i-1][j];
         }
         else{
             dp[i][j]=dp[i-1][j-1]+dp[i-1][j]+dp[i-1][j+1];
         }
    }
}
 int sign = 0;
 for(int i=0; i<all; i++){
     if(dp[number-1][i]%2==0){
         printf("%d\n", i+1);
         sign = 1;
         break;
     }
 }
 if(sign==0)printf("-1\n");
 }

} int main(){

int number;
while( scanf("%d", &number) != EOF){
    if(number<=2){
        printf("-1\n");
    }
    else{
        int x = (number-3)%4;
        switch(x){
            case 0:printf("2\n");
                break;
            case 1:printf("3\n");
                break;
             case 2:printf("2\n");
                break;
             case 3:printf("4\n");
                break;
        }
    }
}

}

全部评论

相关推荐

10-09 00:50
已编辑
长江大学 算法工程师
不期而遇的夏天:1.同学你面试评价不错,概率很大,请耐心等待;2.你的排名比较靠前,不要担心,耐心等待;3.问题不大,正在审批,不要着急签其他公司,等等我们!4.预计9月中下旬,安心过节;5.下周会有结果,请耐心等待下;6.可能国庆节前后,一有结果我马上通知你;7.预计10月中旬,再坚持一下;8.正在走流程,就这两天了;9.同学,结果我也不知道,你如果查到了也告诉我一声;10.同学你出线不明朗,建议签其他公司保底!11.同学你找了哪些公司,我也在找工作。
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务