首页 > 其他 > 详细

hdu-page11 (2080~2089)

时间:2018-03-24 21:51:07      阅读:187      评论:0      收藏:0      [点我收藏+]

//2081
//所有的短号都是是 6+手机号的后5位
#include<stdio.h>
#define N 12
char num[N];
int main()
{
int n;
scanf("%d", &n);
while (n--)
{
scanf("%s", num);
//输出下标为6以后的数字
printf("6%s\n", num + 6);
}
return 0;
}

 

//2083
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<algorithm>
#define N 505
int friends[N], mini[N];
using namespace std;
int main()
{
int m;
int n;
scanf("%d", &m);
while (m--)
{
memset(mini, 0, sizeof(mini));
//n表示n个朋友
scanf("%d", &n);
for (int i = 0; i < n; i++)
{
scanf("%d", &friends[i]);
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
mini[i] += abs(friends[j] - friends[i]);
}
}
sort(mini, mini + n);
printf("%d\n", mini[0]);
}
return 0;
}

 

//2084
/*由上往下推,由于结果状态多,不好处理;
由低往上推,都归于一个起点,只需要算出由底往上得到的最大价值即可
设置一个二维数组,dp,dp[i][j]-----dp[i+1][j],dp[i+1][j+1]*/
#include<stdio.h>
#include<string.h>
#define N 110
int dp[N][N];
int max(int a, int b)
{
return a > b ? a : b;
}
int main()
{
int c;
int n;
scanf("%d", &c);
while (c--)
{
memset(dp, 0, sizeof(dp));
scanf("%d", &n);
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= i; j++)
{
scanf("%d", &dp[i][j]);
}
}
/*思路:是从下面往上面遍历,从最后一行开始遍历,用dp[n][1]记录自身,,,,直到dp[n][n]记录自身;
第n-1行,dp[n-1][1]记录的是dp[n-1][1]、 就是与其相邻的下面一行的两个数的较大值 max(dp[n][1],dp[n][2])的和,dp[n-1][2]记录的是dp[n-1][2]、 就是与其相邻的下面一行的两个数的较大值 max(dp[n][2],dp[n][3])的和,,,
,,,,
一直到第1行,dp[1][1]=max(dp[2][1],dp[2][2])+dp[1][1];
*/
for (int i = n; i >= 1; i--)
{
for (int j = 1; j <= n; j++)
{
dp[i][j] = max(dp[i + 1][j], dp[i + 1][j + 1]) + dp[i][j];
}
}
printf("%d\n", dp[1][1]);
}
return 0;
}

hdu-page11 (2080~2089)

原文:https://www.cnblogs.com/BlueBlue-Sky/p/8641575.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!