递归-记忆化 递归:规律,结束条件 f(n)=2*f(n-1)+f(n-2) n=1 f(1)=1 n=2 f(2)=2 int f(int n){ if(n<=2) return n; return (2*f(n-1)+f(n-2))%32767; } int main(){ int n,k; cin>>n; while(n--){ cin>>k; cout<<f(k)<<endl; } return 0; } 初步记忆化 int nz[1000050]={0,1,2}; int f(int n){ if(nz[n]!=0) return nz[n]; if(n<=2) return n; nz[n]=(2*f(n-1)+f(n-2))%32767 return nz[n]; } 熟练 int nz[1000050]={0,1,2}; int f(int n){ if(nz[n]==0) nz[n]=f(n-1)*2+f(n-2); return nz[n]; } 1204,1205 当cin、cout次数频繁时(10w) printf(); printf是c语言功能 string是c++语言类型 printf不能正常识别string,可以识别字符数组,符号为%s 输出字符串string,需要先变成c语言可以识别的内容【字符数组】 string->char* c_str() string s="我爱中国"; printf("%s",s.c_str()); scanf(); 格式化输入 输入门牌号,按照门牌号排序 a-3-205 b-1-101 scanf("%c-%d-%d",&a,&b,&c);//scanf 必须用&引入变量的地址才能正常存数据 输入一个ip地址 将ip地址的各个数字相加 1.1.1.1 4 192.168.0.1 361 输入两个数,输出他们的和 输入:1,3 输出:4 文件操作 int main(){ freopen("文件名","r",stdin);//cin freopen("文件名","w",stdout);//cout fclose(stdin); fclose(stdout); return 0; } |