HDU 1003    Max Sum

题意:给出一串数字,求出其中某段连续的数字之和最大的值,同时要输出起点的位置和终点的位置~~~

方法一:

用sum记录某一段和的值,maxx为目前为止最大的sum值,当sum+a[i]<0时,sum清零,同时更新起点值~,当sum>max时,使max=sum,同时更新要输出的起点值start以及要输出的终点值end~

代码:

 #include<iostream>
#include<cstdio>
#include<cstring>
using namespace std; int main()
{
int t,n,cas=;
scanf("%d",&t);
while(t--)
{
cas++;
int i,j,sum=,start=,endd=,a,maxx=-,f,e;
scanf("%d",&n);
for(i=,f=,e=;i<n;i++)
{
scanf("%d",&a);
sum+=a;
if(sum>maxx)
{
maxx=sum; //跟新要输出的最大值,起点值,终点值~
start=f;
endd=i;
}
if(sum<)
{
sum=; //清零~并更新下一组数字的起点值~
f=i+;
}
e=i;
}
printf("Case %d:\n",cas);
printf("%d %d %d\n",maxx,start+,endd+);
if(t) printf("\n");
}
return ;
}

//memory:228KB  time:0ms

POJ 1050   To the Max

题意:

给出一个矩阵,求出其中最大的子矩阵之和~其实与上题很相似~

 #include<iostream>
#include<cstring>
using namespace std;
#define N 110
int a[N][N];
int b[N];
int main(){
int n,r;
cin>>r;
memset(a,,sizeof(a));
for(int i=;i<=r;++i)
for(int j=;j<=r;++j)
{
cin>>a[i][j];
a[i][j]+=a[i-][j];
}
int max=a[][];
for(int i=;i<=r-;++i)
for(int j=i+;j<=r;++j)
{
memset(b,,sizeof(b));
for(int k=;k<=r;++k)
{
if(b[k-]>=)
b[k]=b[k-]+a[j][k]-a[i][k];
else
b[k]=a[j][k]-a[i][k];
if(max<b[k])
max=b[k];
}
}
cout<<max<<endl;
}

//memory:276KB  time:32ms

HDU 1800      Flying to the Mars

其实就是求排列(从大到小)好的最长上升子序列长度~

代码:

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std; class A
{
public:
int x,id;
}a[]; bool comp(A k,A y)
{
return k.x>y.x;
} int main()
{
int n;
while(~scanf("%d",&n))
{
int i,j,number=,minn;
memset(a,,sizeof(a));
for(i=;i<n;i++)
scanf("%d",&a[i].x);
sort(a,a+n,comp);
for(i=;i<n;i++)
if(a[i].id==)
{
number++;
a[i].id=;
minn=a[i].x;
for(j=i+;j<n;j++)
if(a[j].id== && a[j].x<minn)
{
minn=a[j].x;
a[j].id=;
}
}
printf("%d\n",number);
}
}

//memory:252KB  time:312ms

HDU 2036     改革春风吹满地

题意:求面积~

该题目是有公式的~

代码:

 #include <iostream>//这是直接用叉积求多边形面积的
#include <algorithm>
#include <cstdio>
#include <string.h>
#include <iostream>
#include <cmath>
#include <stdlib.h>
using namespace std;
int main()
{
double s;
int n,i;
int x1,y1,x2,y2,x3,y3;
while(scanf("%d",&n),n)
{ s=;
scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
for(i=;i<n;i++)
{
scanf("%d%d",&x3,&y3);
s+=(x2-x1)*(y3-y1)-(x3-x1)*(y2-y1);
x2=x3;y2=y3;
}
s=s>?s:-s;
printf("%.1lf\n",s*0.5); }
return ;
}

//memory:240KB   time:0ms

POJ 1088      滑雪

题意:找出最长的路径~

代码:

 #include <iostream>
#include <cstdio>
#include <cstring>
using namespace std; int r,c,a[][],dp[][],add[][]={{-,},{,},{,-},{,}}; int get_high(int x,int y)
{
if(dp[x][y]>)
return dp[x][y];
int maxx=,i,j,hx,hy;
for(i=;i<;i++)
{
hx=x+add[i][];
hy=y+add[i][];
if(a[x][y]>a[hx][hy] && hx>= && hy>= && hx<r && hy<c)
{
int h=get_high(hx,hy)+;
if(h>maxx) maxx=h;
}
}
return maxx;
} int main()
{
int i,j,maxx;
while(~scanf("%d%d",&r,&c))
{
memset(dp,,sizeof(dp));
for(i=;i<r;i++)
for(j=;j<c;j++)
{
scanf("%d",&a[i][j]);
dp[i][j]=;
}
for(i=,maxx=;i<r;i++)
for(j=;j<c;j++)
{
dp[i][j]=get_high(i,j);
if(dp[i][j]>maxx)
maxx=dp[i][j];
}
printf("%d\n",maxx);
}
return ;
}

//memory:224KB  time:16ms

8-6-Exercise的更多相关文章

  1. MIT 6.828 JOS学习笔记12 Exercise 1.9

    Lab 1中Exercise 9的解答报告 Exercise 1.9: 判断一下操作系统内核是从哪条指令开始初始化它的堆栈空间的,以及这个堆栈坐落在内存的哪个地方?内核是如何给它的堆栈保留一块内存空间 ...

  2. MIT 6.828 JOS学习笔记13 Exercise 1.10

    Lab 1 Exercise 10 为了能够更好的了解在x86上的C程序调用过程的细节,我们首先找到在obj/kern/kern.asm中test_backtrace子程序的地址, 设置断点,并且探讨 ...

  3. MIT 6.828 JOS学习笔记11 Exercise 1.8

    Exercise 1.8       我们丢弃了一小部分代码---即当我们在printf中指定输出"%o"格式的字符串,即八进制格式的代码.尝试去完成这部分程序. 解答: 在这个练 ...

  4. MIT 6.828 JOS学习笔记8. Exercise 1.4

    Lab 1 Exercise 4 阅读关于C语言的指针部分的知识.最好的参考书自然是"The C Programming Language". 阅读5.1到5.5节.然后下载poi ...

  5. MIT 6.828 JOS学习笔记9. Exercise 1.5

    Lab 1 Exercise 5 再一次追踪一下boot loader的一开始的几句指令,找到第一条满足如下条件的指令处: 当我修改了boot loader的链接地址,这个指令就会出现错误. 找到这样 ...

  6. MIT 6.828 JOS学习笔记5. Exercise 1.3

    Lab 1 Exercise 3 设置一个断点在地址0x7c00处,这是boot sector被加载的位置.然后让程序继续运行直到这个断点.跟踪/boot/boot.S文件的每一条指令,同时使用boo ...

  7. MIT 6.828 JOS学习笔记3. Exercise 1.2

    这篇博文是对Lab 1中的Exercise 2的解答~ Lab 1 Exercise 2: 使用GDB的'si'命令,去追踪ROM BIOS几条指令,并且试图去猜测,它是在做什么.但是不需要把每个细节 ...

  8. Stanford coursera Andrew Ng 机器学习课程编程作业(Exercise 2)及总结

    Exercise 1:Linear Regression---实现一个线性回归 关于如何实现一个线性回归,请参考:http://www.cnblogs.com/hapjin/p/6079012.htm ...

  9. stanford coursera 机器学习编程作业 exercise 3(逻辑回归实现多分类问题)

    本作业使用逻辑回归(logistic regression)和神经网络(neural networks)识别手写的阿拉伯数字(0-9) 关于逻辑回归的一个编程练习,可参考:http://www.cnb ...

  10. Stanford coursera Andrew Ng 机器学习课程编程作业(Exercise 1)

    Exercise 1:Linear Regression---实现一个线性回归 在本次练习中,需要实现一个单变量的线性回归.假设有一组历史数据<城市人口,开店利润>,现需要预测在哪个城市中 ...

随机推荐

  1. PHP-traits新特性详解

    自 PHP 5.4.0 起,PHP 实现了代码复用的一个方法,称为 traits. Traits 是一种为类似 PHP 的单继承语言而准备的代码复用机制.Trait 为了减少单继承语言的限制,使开发人 ...

  2. php练习7——类的运用(四则运算or面积计算[javascript小技巧——根据需求显示不同界面])

    要求:请编写一个类,该类可以进行四则运算,也可以进行矩形面积计算 1.程序 viewCount.html  Count.class.php      printCount.php 2.结果      ...

  3. win7如何完全写在iis

    在前些天,因为需要搭建了ftp服务器,但是今天不需要了,所以要卸载iis,因为我不会让iis和apache同时共存,所以只能卸载了 先找到windows功能,然后把Internet信息服务勾选掉,重启 ...

  4. jquery 的新使用用法

    在1.9.1jquery版本中,live 被替换了,现在使用on事件 在动态添加的行中使用下面可响应 $("tbody").on("click","b ...

  5. [python]字符串方法

    字符串的方法及注释 字符串的方法及注释             capitalize()   把字符串的第一个字符改为大写   casefold()   把整个字符串的所有字符改为小写   cente ...

  6. WPF窗体禁用最大化按钮

    禁用WPF窗体的最大化按钮可以使用Windows API改变按钮状态的方法实现.使用GetWindowLong可以得到当前按钮的状态.使用SetWindowLong可以设置按钮的状态.使用SetWin ...

  7. 多个div独立控制其显示/隐藏

    今天要说一个神奇的html标签op,静态页下可以配合jquery分别控制每个层的显示/隐藏切换. 如果用动态中使用,用文章id做区分就可以了. <html> <head> &l ...

  8. Mozilla公布WebVR API标准草案

    随着信息技术的迅速发展,虚拟现实(Virtual Reality,VR)技术在近些年不断完善,其应用范围也变得十分广泛.为了搭建逼真的虚拟场景,VR技术一般都需要用到大量精美的图像和复杂的动作.因此, ...

  9. 深入解析java虚拟机-jvm运行机制

    转自oschina 一:JVM基础概念 JVM(Java虚拟机)一种用于计算设备的规范,可用不同的方式(软件或硬件)加以实现.编译虚拟机的指令集与编译微处理器的指令集非常类似.Java虚拟机包括一套字 ...

  10. 转载:遍历Map的四种方法

    http://www.cnblogs.com/kristain/articles/2033566.html 遍历Map的四种方法 public static void main(String[] ar ...