小算法测试
2013-11-16 20:10
531 查看
一个整数数组中一半以上数据是相同的,快速找出
路径问题:
#include <stdio.h> int main(int argc, char const *argv[]) { int a[argc-1]; for(int i = 1;i<argc;i++){ a[i-1] = atoi(argv[i]); } findMost(a,argc-1); return 0; } int findMost(int *a,int size){ int current; int num = 0; if(size<1){ return -1; } current = a[0]; for(int i = 0;i<size; i++){ if(a[i]==current){ num++; // printf("c:%d\n", num); }else{ // printf("d:%d\n", num); num--; } if(num == 0){ current = a[i]; num=1; } } printf("number:%d,count:%d\n", current,num); }
路径问题:
#include <stdio.h> struct point { int x; int y; } p; int main(int argc, char const *argv[]) { //printf("%s\n", argv[1]); int number = atoi(argv[1]); position(number); printf("x:%d y:%d\n", p.x,p.y); return 0; } void position(int num){ p.x = 0; p.y = 0; if(num == 1){ return; } int circle = 1; int direct = 0; int step = circle; int tem = 2; for(int i = 1; i<num;i++){ printf("%d\n", direct); switch(direct){ case 0:{ p.x++; break; } case 1:{ p.y++; break; } case 2:{ p.x--; break; } case 3:{ p.y--; break; } } step--; if(step==0){ tem --; direct = (direct+1)%4; printf("c:%d\n", direct); if(tem==0){ circle++; tem = 2; } step = circle; } } }
相关文章推荐
- Linux没有最小只有更小----迷你Linux版本大集合
- 利用chrome浏览器的F12功能提取网页中的视频、音乐
- zoj3622Magic Number
- Intent的属性及Intent-filter配置——指定Action、Category调用系统Activity
- C语言变量、函数的作用域及变量的存储方式
- 复制构造函数
- Struts2在MyEclipse9.0上的一些错误
- JAVA学习.JAVA面向对象编程的理解&Random类
- cURL实现Get和Post
- 一步一步学Silverlight 2系列(12):数据与通信之WebClient
- NSIS打包发布Qt程序
- C语言写CGI程序
- 磁盘分区
- 机房收费系统—组合查询
- Asterisk manager API(AMI)文档(中文版)
- 关于哈希码(Hashcode)
- 闪回查询&闪回版本查询&闪回表&闪回事务处理
- 线程池
- CGI之C语言篇
- 阅读程序的方法