日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

整数问题

發(fā)布時(shí)間:2025/3/18 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 整数问题 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>

一個(gè)正整數(shù)是否能被三個(gè)整數(shù) a,b,c的非負(fù)整數(shù)線性組合所表示?

#include <stdio.h>int IsPossibleResult(int n,int a,int b,int c) {if(n==0) return 1;if(n<0) return 0;return IsPossibleResult(n-a,a,b,c)||IsPossibleResult(n-b,a,b,c)||IsPossibleResult(n-c,a,b,c); } int main(void) { printf("%d",IsPossibleResult(16,6,7,19));return 0; }

非遞歸版本:

#include <stdio.h>int IsPossibleResult_non_recur(int n,int a,int b,int c) {int na=0,nb=0,nc=0;int resultNum=0;for(na=0;na<=n;na++){ if(n-a*na<0)break;for(nb=0;nb<=n;nb++){if(n-a*na-b*nb<0)break;for(nc=0;nc<=n;nc++){if(n-a*na-b*nb-c*nc<0)break;if(n-a*na-b*nb-c*nc==0){printf("%d*%d+%d*%d+%d*%d=%d\n",na,a,nb,b,nc,c,n);resultNum++;break;}}}}return resultNum; }int main(void) { printf("%d",IsPossibleResult_non_recur(16,3,4,2));return 0; }

動(dòng)態(tài)規(guī)劃版本:

#include <stdio.h> #include <stdlib.h>int IsPossibleResult_dp(int n,int a,int b,int c) {int *data=(int*)malloc(2*n*sizeof(int));data[0]=1;int i=0;while(i<n){if(data[i]==1){data[i+a]=1;data[i+b]=1;data[i+c]=1;}i++;}int res=data[n];free(data);return res;}int main(void) { printf("%d\n",IsPossibleResult_dp(16,3,4,2));return 0; }

三者的比較?

#include <stdio.h>int count_r,count,dp_count; int IsPossibleResult(int n,int a,int b,int c) {count_r++;if(n==0) return 1;if(n<0) return 0;return IsPossibleResult(n-a,a,b,c)||IsPossibleResult(n-b,a,b,c)||IsPossibleResult(n-c,a,b,c); }int IsPossibleResult_non_recur(int n,int a,int b,int c) {int na=0,nb=0,nc=0;int resultNum=0;for(na=0;na<=n;na++){if(n-a*na<0)break;for(nb=0;nb<=n;nb++){if(n-a*na-b*nb<0)break;for(nc=0;nc<=n;nc++){count++;if(n-a*na-b*nb-c*nc<0)break;if(n-a*na-b*nb-c*nc==0){//printf("%d*%d+%d*%d+%d*%d=%d\n",na,a,nb,b,nc,c,n);resultNum++;break;}}}}return resultNum; }int IsPossibleResult_dp(int n,int a,int b,int c) {int data[100000];data[0]=1;int i=0;while(i<n){dp_count++;if(data[i]==1){data[i+a]=1;data[i+b]=1;data[i+c]=1;}i++;}return data[n];}int main(void) { count=count_r=0;printf("%d\n",IsPossibleResult_non_recur(16,3,4,2));printf("%d\n",IsPossibleResult(16,3,4,2));printf("%d\n",IsPossibleResult_dp(16,3,4,2));printf("R:%d,NR:%d,DP:%d\n",count_r,count,dp_count);return 0; }

?

轉(zhuǎn)載于:https://my.oschina.net/betayuan/blog/1549663

總結(jié)

以上是生活随笔為你收集整理的整数问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。