遇到的比较有意思的问题(1)去掉重复数字(2)提取数组的子数组,求和最大的子数组、最大的子数组和
2013-11-03 17:04
381 查看
(1) 去掉数组中重复的数字,即每个相同的数字只出现一次
(2)在长度为8的数组里输入8个数:有正数也有负数,数组中连续的一个或多个整数组
成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值
例如:数组a[8] ={1,-3,4,5,9,-7,5,-4}; 的字数组之一是 {-3,4,5}
和最大的字数组是{4,5,9} 和为 18
#include<stdio.h> int main() { int a[20],i,j,k,n; printf("请输入你想输入的数字的总个数 n="); scanf("%d",&n); for(i=0;i<n;i++) { printf("请输入a[%d]=",i); scanf("%d",&a[i]); } printf("\n"); for(i=0;i<n;i++) printf("%d ",a[i]); printf("\n"); for(i=1;i<n;i++) { for(j=0;j<i;j++) if(a[i]==a[j]) break; if(j<i) { for(k=i+1;k<n;k++) a[k-1]=a[k]; i--; n--; } } for(i=0;i<n;i++) printf("%d ",a[i]); }
(2)在长度为8的数组里输入8个数:有正数也有负数,数组中连续的一个或多个整数组
成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值
例如:数组a[8] ={1,-3,4,5,9,-7,5,-4}; 的字数组之一是 {-3,4,5}
和最大的字数组是{4,5,9} 和为 18
#include<stdio.h> int main() { int a[8]= {1,-3,4,5,9,-7,5,-4},b[8]={0}; int i,j,max=0,sum=0,sum1,row1 ,row2,k; for(i =0;i<=7;i++) { for(j=i;j<7;j++) { sum=sum+a[j]; if(max<sum) { max=sum; row1=i,row2=j; } printf("sum=%d\t",sum); } sum = 0; printf("\n"); } printf("和最大max=%d \n子数组为",max); for(k=row1;k<=row2;k++) printf("a[%d]=%d\t",k,a[k]); return 0; }
相关文章推荐
- Servlet基础(一) Servlet基础和关键的API介绍
- [原]考试系统——C#反射机制+工厂模式+缓存机制遇到问题
- [原]考试系统——C#反射机制+工厂模式+缓存机制遇到问题
- hibernate 配置搭建
- 插入排序
- 【Java TCP/IP Socket】TCP Socket(含代码)
- Jquery 秀、无极限------正则表达式、Html、CSS、JavaScript基础回顾
- 考试系统——C#反射机制+工厂模式+缓存机制遇到问题
- 二分图
- SVN版本控制的环境搭建
- linux c socket 实现http get/post请求
- 在bootstrap 中 的 radio button 设置 checked
- 斐波那契额数列及青蛙跳台阶问题
- cacati的安装
- win7 64位 apache+php配置,重头到尾,我出现的错误也让你看到(apache2.4.6win64 php5.5.5)
- JavaBean的作用域
- 功夫茶
- 开博客了!
- 简单的IPv6 UDP/TCP socket编程 -- 两台Linux实现简单的ipv6通信
- Android之分頁效果-ViewPager、Indicator、Fragment