几道算法题

1.

Problem Description

Given a sequence a[1],a[2],a[3]......a[n], your job
is to calculate the max sum of a sub-sequence. For example, given (6,-1,5,4,-7),
the max sum in this sequence is
6 + (-1) + 5 + 4 = 14.

Input

The first line of the input contains an integer
T(1<=T<=20) which means the number of test cases. Then T lines follow,
each line starts with a number N(1<=N<=100000), then N integers
followed(all the integers are between -1000 and 1000).

Output

For each test case, you should output two lines. The
first line is "Case #:", # means the number of the test case. The second line
contains three integers, the Max Sum in the sequence, the start position of the
sub-sequence, the end position of the sub-sequence. If there are more than one
result, output the first one. Output a blank line between two cases.

Sample Input

2 5 6 -1 5 4 -7 7 0 6 -1 1 -6 7 -5

Sample Output

Case 1: 14 1 4 Case 2: 7 1 6

answer:

#include<stdio.h>
#include<string.h>
int main()
{

int t,n,i,j,a,k,l;
int sum[100000+10]={0};
int
left,right,min,best;

scanf("%d",&t);
for(k=1;k<=t;k++)
{

scanf("%d",&n);

for(i=1;i<=n;i++) {scanf("%d",&a);
sum[i]=sum[i-1]+a;}

left=-1; right=-1;
min=100000001;
best=-100000001; //??

for(j=1;j<=n;j++) //以j结尾的子串
{
if(sum[j-1]<min) {min=sum[j-1];
l=j;}
if(sum[j]-min>best)
{

best=sum[j]-min;
left=l;
right=j;

}
}
if(k==t) printf("Case %d:\n%d %d
%d\n",k,best,left,right);
else printf("Case %d:\n%d %d
%d\n\n",k,best,left,right);
}
return 0;
}

时间: 2024-10-18 13:28:49

几道算法题的相关文章

[2]十道算法题【Java实现】

前言 清明不小心就拖了两天没更了-- 这是十道算法题的第二篇了-上一篇回顾:十道简单算法题 最近在回顾以前使用C写过的数据结构和算法的东西,发现自己的算法和数据结构是真的薄弱,现在用Java改写一下,重温一下. 只能说慢慢积累吧-下面的题目难度都是简单的,算法的大佬可直接忽略这篇文章了-入门或者算法薄弱的同学可参考一下- 很多与排序相关的小算法(合并数组.获取数字每位值的和),我都没有写下来了,因为只要会了归并排序(合并数组),会了桶排序(获取数字每位的值),这些都不成问题了.如果还不太熟悉八大

百度3道算法题求解

第一题: 某个公司举行一场羽毛球赛,有1001个人参加,现在为了评比出"最厉害的那个人",进行淘汰赛,请问至少需要进行多少次比赛. 第二题 有100个灯泡,第一轮把所有灯泡都开启,第二轮把奇数位的灯泡灭掉,第三轮每隔两个灯泡,灭一个,开一个,依此类推.求100轮后还亮的灯泡. 第二题目说错了: 重新在描述一遍,sorry: 一百个灯泡排成一排,第一轮将所有灯泡打开: 第二轮每隔一个灯泡关掉一个.即排在偶数的灯泡被关掉, 第三轮每隔两个灯泡,将开着的灯泡关掉,关掉的灯泡打开. 依次类推,

百度的两道算法题--插入排序的变形

百度面试题(一):假设一整型数组存在若干正数和负数,现在通过某种算法使得该数组的所有负数在正数的左边,且保证负数和正数间元素相对位置不变.时空复杂度要求分别为:o(n)和o(1). #include<iostream> using namespace std; int main() { int a[8] = { 2, 1, 5, 12, 9, 11,14,6}; for (int i = 1; i < 8; i++) { if (a[i] <0) { int temp=a[i];

关于有序二维矩阵查找和字符串替换的两道算法题

最近看一本书上写到的两个面试题 于是实现了一下 感觉思路很好,大牛略过 : 1.对于一个二维矩阵,从左到右  从上到下 都是递增的,如何判断一个值是否在矩阵内部?(C实现  实现复杂度 O(n)) bool FindInTwoDimensionalMatrix(int*pMatrix,int iRows,int iCols,int iFindVal) { bool bFind=false ; if(pMatrix==0||iRows<=0||iCols<=0) return bFind ; i

每天两道算法题(一)

题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. public class Solution { public boolean Find(int target, int [][] array) { try { for(int i=array.length-1;i>=0;i--) { if (array[i][0]>=target) { if (array[i][0]=

算法题--将英文数字转换成阿拉伯数字

将英文数字转换成阿拉伯数字 随机看了几道算法题,以下答案也是别人写的,非本人所写 思路: 三个进行一个划分 代码: public class POJ_2121 { public static void main(String[] args) { /** * negative, zero, one, two, three, four, five, six, seven, * eight, nine, ten, eleven, twelve, thirteen, fourteen, fifteen,

第一篇博客--记面陌陌科技计算机视觉算法工程师被刷经历(附面试过程中被问倒的一些算法题分析)

求职季,真的会让一个人变得有些不一样吧,比如我,对于一个菜鸟来说,最近一段时间焦虑不安外加有点自闭... 前段时间在校内网上看到了陌陌科技内推计算机视觉算法工程师和机器学习算法工程师的消息,抱着试试的心态整理了一份简历按照提供的邮箱投出去了,我想这次应该又是石沉大海了吧,谁想在一周前闷热的一天在嘈杂的餐厅接到了陌陌科技HR的电话,一周后的周五下午4点在西安的一家咖啡馆参加面试.我问清了时间地点并道谢了HR后并挂了电话继续吃饭. 好吧,这周每天都有各个公司的笔试,外加这周周五上午的组会轮到我做组会

【软帝学院】12道java经典入门算法题!

12道java经典入门算法题! [程序1]   题目:将一个数组逆序输出. 程序分析:用第一个与最后一个交换. 其实,用循环控制变量更简单: for(int k=11;k>=1;k--) System.out.print(myarr[k]+","); [程序2]   题目:取一个整数a从右端开始的4-7位. 程序分析:可以这样考虑: (1)先使a右移4位. (2)设置一个低4位全为1,其余全为0的数.可用~(~0 < <4) (3)将上面二者进行&运算. pu

12道java经典入门算法题!

12道java经典入门算法题![程序1] ? 题目:将一个数组逆序输出. ? 程序分析:用第一个与最后一个交换. ? 其实,用循环控制变量更简单:for(int k=11;k>=1;k--)System.out.print(myarr[k]+","); [程序2] ? 题目:取一个整数a从右端开始的4-7位. ? 程序分析:可以这样考虑: ? (1)先使a右移4位. ? (2)设置一个低4位全为1,其余全为0的数.可用~(~0 < <4) ? (3)将上面二者进行&a