C++程序设计 编程题

资讯吧 浏览

一、C++程序设计 编程题

int a[100]

二、c++程序设计题目

是经典的数塔问题吧?

这题要用递推的思想来考虑

设数组f[i][j]表示从底向上开始推,到当前为第i层从左往右第j个数时的最大收益

很明显可以知道,递推方程为

f[i][j]=max(f[i+1][j],f[i+1][j+1])+a[i][j]

其中 a[i][j]表示第i行第j个数的数值

附初始值时,f[n][i]=a[n][i](即最后一层的数为该位置原本的数)

因为要从第i+1行推向第i行,所以第一个循环要从n-1推到1

即 for(i=n-1; i>=1; i--)

如果还有不明白的地方可以追问

加油!

程序如下:

#include#include using namespace std; int a[1001][1001],f[1001][1001]; int n; int main() { int i,j; scanf(%d,&n); for(i=1;i<=n;i++) for(j=1;j<=i;j++) scanf(%d,&a[i][j]); for(i=1;i<=n;i++) f[n][i]=a[n][i]; for(i=n-1;i>=1;i--) for(j=1;j<=i;j++) f[i][j]=max(f[i+1][j],f[i+1][j+1])+a[i][j]; printf(%d\n,f[1][1]); scanf(%d,&n); return 0; }

三、C++程序设计的几个题目

真是服了你了,这么多问题,还这么多要求。你可知道就第二题一题都值200分最少,给你写了这么多代码而且都是调试编译通过的,还不满足啊?你应该很满意了,碰到我是你运气,你慢慢就知道了。我你可遇不可得。 算法是程序的灵魂,给你一些简洁高效代码: 第一题: #include #include int main() { int i; char s[5]; for(i=32;i<=99;i++) { sprintf(s,%d,i*i); if(s[0]==s[1]&&s[2]==s[3]) printf(%s ,s); } system(pause); return 0; } 第二题: 智力游戏九宫格简练代码 #include #include int a[]={0,1,2,5,8,7,6,3}; /*指针数组.依次存入矩阵中构成环的元素下标*/ int b[9]; /*表示3X3矩阵,b[4]为空格*/ int c[9]; /*确定1所在的位置后,对环进行调整的指针数组*/ int count=0; /*数字移动步数计数器*/ void print(void) /*按格式要求输出矩阵*/ { int c; printf( >> Step No.%2d ,count++); for(c=0;c<9;c++) if(c%3==2) printf(%2d ,b[c]); else printf(%2d,b[c]); printf(\n); } int main() { int i,j,k,t; system(cls); printf( >> Please enter original order of digits 1-8: ); for(i=0;i<8;i++) scanf(%d,&b[a[i]]); /*顺序输入矩阵外边的8个数字,矩阵元素的顺序由指针数组的元素a[i]控制*/ printf(The sorting process is as felow:\n); print(); for(t=-1,j=0;j<8&&t==-1;j++) /*确定数字1所在的位置*/ if(b[a[j]]==1) t=j; /*t:记录数字1所在的位置*/ for(j=0;j<8;j++) /*调整环的指针数组,将数字1所在的位置定为环的首*/ c[j]=a[(j+t)%8]; for(i=2;i<9;i++) /*从2开始依次调整数字的位置*/ /*i:正在处理的数字,i对应在环中应当的正确位置就是i-1*/ for(j=i-1;j<8;j++) /*从i应处的正确位置开始顺序查找*/ if(b[c[j]]==i&&j!=i-1) /*若i不在正确的位置*/ { b[4]=i; /*将i移到中心的空格中*/ b[c[j]]=0;print(); /*空出i原来所在的位置,输出*/ for(k=j;k!=i-1;k--) /*将空格以前到i的正确位置之间的数字依次向后移动一格*/ { b[c[k]]=b[c[k-1]]; /*数字向后移动*/ b[c[k-1]]=0; print(); } b[c[k]]=i; /*将中间的数字i移入正确的位置*/ b[4]=0; /*空出中间的空格*/ print(); break; } else if(b[c[j]]==i) break; /*数字i在正确的位置*/ system(pause); return 0; } 第三--第五题太没挑战性,无激情。 第三题: #include #include int isLetter(char c) { if((c>='A'&&c<='Z') || (c>='a'&&c<='z')) return 1; else return 0; } void translate(char s[]) { int i; for(i=0;s[i]!='\0';i++) if(isLetter(s[i])) { if(s[i]>='A'&&s[i]<='Z') s[i]=(s[i]-'A'+1)%26+'A';/* 取模方法可避免字符出界 */ else s[i]=(s[i]-'a'+1)%26+'a'; } } int main() { char ch,s[256]; puts(Please input your string:); gets(s); puts(Encrypt or not?(y/n):); ch=getchar(); puts(The result is:); if(ch=='Y'||ch=='y') { translate(s); } puts(s); system(pause); return 0; } 第四题: #include #include void sort(int* p,int n) { int i,j,k,temp; for(i=0;i*(p+j))k=j; if(k!=i) { temp=*(p+i); *(p+i)=*(p+k); *(p+k)=temp; } } } int main() { int a[1024],i,num; printf(Please input numbers of array:); scanf(%d,&num); printf(Please input %d elements of array:\n,num); for(i=0;i #include #define MAXN 20 #define MAXM 20 int a[MAXN][MAXM]; int main() { int i,j,m,n,min,max; printf(Please input rank and column of matrix:); scanf(%d%d,&m,&n); printf(Please input %d elements of the matrix:\n,m*n); for(i=0;imax) { max=a[i][j]; } } printf(The minium is: %d\nThe maxium is: %d\n,min,max); system(pause); return 0; } ------------------------------------------------------------ #include using std::endl; using std::cout; int main() { int a,b,c,d,i,n; for(i=32;i<100;i++) { n=i*i; a=n/1000;//整数除以整数结果当然是整数了 b=(n-a*1000)/100; c=(n%100)/10; d=n%10; if(a==b && c==d) cout<<< ;//还没计算怎么知道答案只有一个? } cout<;i++)>;i++)>;i++)>

转载请注明:多米培训网 » C++程序设计 编程题