30,228
社区成员




//如下所示为一个数字三角形。请编一个程序计算从顶到底的某处的一条路径,使该路径所经过的数字总和最大。只要求输出总和。
// 1、 一步可沿左斜线向下或右斜线向下走;
// 2、 三角形行数小于等于100;
// 3、 三角形中的数字为0,1,…,99;
//测试数据通过键盘逐行输入,如上例数据应以如下所示格式输入:
//5
//7
//3 8
//8 1 0
//2 7 4 4
//4 5 2 6 5
//答案:30
代码:
//方法3:dp做法
//#include<iostream>
//#include<string.h>
//using namespace std;
//int main() {
// int n;
// scanf("%d", &n);
// int a[n][n];
// memset(a, 0, sizeof(a));
// for (int i = 0; i < n; i++)
// for (int j = 0; j <= i; j++)
// cin>>a[i][j];
// int dp[n][n];
// memset(dp, 0, sizeof(dp));
//
// for (int i = 0; i < n; i++) {
// dp[n - 1][i] = a[n - 1][i];
// }
//
// for (int i = n - 2; i >= 0; i--) {
// for (int j = 0; j <= i; j++)
// dp[i][j] = max(dp[i + 1][j], dp[i + 1][j + 1]) + a[i][j];
// }
// cout << dp[0][0] << endl;
// return 0;
//}
直接上代码:
//6的约数是1,2,4,6共四个
//#include<stdio.h>
//int main()
//{
// int n,i,count=0;
// scanf("%d",&n);
// printf("约数分别是:");
// for(i=1;i<=n;i++)
// {
// if(n%i==0){
// printf("%d ",i);
// count++;
// }
// }
// printf("\n共%d个约数",count);
//
//}
//#include<stdio.h>
//int main()
//{
// int n,i,count=0;
// scanf("%d",&n);
// printf("约数分别是:");
// for(i=1;i<=n/2;i++)
// {
// if(n%i==0){
// printf("%d ",i);
// count++;
// }
// }
// printf("%d",n);
// printf("\n共%d个约数",count+1);
//
//}
//#include<stdio.h>
//int main()
//{
// int n,i,count=0;
// scanf("%d",&n);
// for(i=1;i*i<=n;i++)
// {
// if(n%i==0){
// if(i*i==n) count++;
// else count+=2;
// }
// }
// printf("共%d个约数",count);
//
//}
总结:有能力的人,不会在意环境!