fill数组填充
函數參數
fill(first,last,val),first,last 對應數組的范圍,val為元素的值
fill 顧名思義 這個函數是用來填充的,例如我們想對一個數組賦值
#include<iostream> #include<bits/stdc++.h> using namespace std; int main(){ cout<<"一維數組 "<<endl;int a[20]; int b[20]; char c[20]; float d[20]; fill(a,a+11,1); //賦值1 fill(b,b+11,2147483647); //賦值最大整型 2147483647 fill(c,c+11,'*'); //賦值 * fill(d,d+11,0.1); //賦值 0.1 for(int i=0;i<20;i++) cout<<a[i]<<" "; cout<<endl; for(int i=0;i<20;i++) cout<<b[i]<<" "; cout<<endl; for(int i=0;i<20;i++) cout<<c[i]<<" "; cout<<endl; for(int i=0;i<20;i++) cout<<d[i]<<" "; cout<<endl; cout<<"二維數組 "<<endl;int mp[20][20];fill(mp[0],mp[0]+20*20,5);for(int i=0;i<20;i++){for(int j=0;j<20;j++)cout<<mp[i][j]<<" "; cout<<endl; }return 0; }注意:填充量必須是常數
/* NYOJ737 石子合并(一)區間動態規劃 */ #include<bits/stdc++.h> using namespace std; #define inf 0x3f3f3f3f //#define inf 1<<20 const int maxn=210; int n,a[maxn]; int dp[maxn][maxn];//dp[i][j]表示從第i堆到第j堆合并的代價 int sum[maxn][maxn];//表示石頭的數量 int main() {ios::sync_with_stdio(0);while(cin>>n){for(int i=1;i<=n;i++)cin>>a[i];memset(sum,0,sizeof(sum));//fill(dp[0],dp[0]+n*n,inf);//錯誤 fill(dp[0],dp[0]+maxn*maxn,inf);//fill填充量必須是常數 for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)//dp[i][j]=inf;cout<<dp[i][j]<<endl;for(int i=1;i<=n;i++)sum[i][i]=a[i],dp[i][i]=0;for(int len=1;len<n;len++){//區間長度 for(int i=1;i<=n&&i+len<=n;i++){//區間起點 int j=i+len;//區間終點for(int k=i;k<=j;k++)//用k來表示分割區間 {sum[i][j]=sum[i][k]+sum[k+1][j];dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+1][j]+sum[i][j]);} }}cout<<dp[1][n]<<endl;}return 0; }總結
- 上一篇: 数据挖掘实战(三):特征工程-二手车交易
- 下一篇: 2018年4月1日 蓝桥杯 C/C++B