您的位置:首页 > 其它

小算法测试

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;

}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: