📄 zhongshu.cpp
字号:
#include <stdio.h>
#include<conio.h>
int main()
{
void dev(int[],int);
long int n,i;
int a[10]={0};
printf("请输入书的页码数n(0<n<10^9):");
scanf("%d",&n);
for(i=1;i<=n;i++)
dev(a,i);
printf("\n");
for(i=0;i<10;i++)
printf("编码为%d的个数:\t\t%-d\n",i,a[i]);
getch();
}
void dev(int array[],int number)
{
int a,b,c,d,e,f,g,h;
a=number/10000000; /*分离第八位*/
b=number/1000000%10; /*分离第七位*/
c=number/100000%10; /*分离第六位*/
d=number/10000%10; /*分离第五位*/
e=number%10000/1000; /*分离第四位*/
f=number%1000/100; /*分离第三位*/
g=number%100/10; /*分离第二位*/
h=number%10; /*分离第一位*/
if(a!=0)
{array[a]++;array[b]++;array[c]++;array[d]++;array[e]++;array[f]++;array[g]++;array[h]++;}
else if(b!=0)
{array[b]++;array[c]++;array[d]++;array[e]++;array[f]++;array[g]++;array[h]++;}
else if(c!=0)
{array[c]++;array[d]++;array[e]++;array[f]++;array[g]++;array[h]++;}
else if(d!=0)
{array[d]++;array[e]++;array[f]++;array[g]++;array[h]++;}
else if(e!=0)
{array[e]++;array[f]++;array[g]++;array[h]++;}
else if(f!=0)
{array[f]++;array[g]++;array[h]++;}
else if(g!=0)
{array[g]++;array[h]++;}
else if(h!=0)
{array[h]++;}
}
问题描述: 输油管道问题:某石油公司计划建造一条由东向西的主输油管道。该管道要穿过一个有n口油井的油田,从每口油井都要有一条输油管道沿最短路经(或南或北)与主管道相连。如果给定n口油井的位置,即它们的x坐标(东西向)和y坐标(南北向),应如何确定主管道的最优位置,即使各油井到主管道之间的输油管道长度总和最小的位置?证明可在线性时间内确定主管道的最优位置。
#include<stdio.h>
#include<conio.h>
#include<math.h>
#define N 20
int main()
{
void path(int [],int);
int array[N];
int i,n;
printf("请输入油井的个数:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("请输入第%d个管道的纵坐标:",i+1);
scanf("%d",&array[i]);
}
path(array,n);
getch();
}
void path(int a[],int n)
{
int i,j,temp,minimum=0,minimum2=0;
for(i=1;i<=n-1;i++)
for(j=0;j<=n-2;j++)
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
printf("\n管道位置纵坐标为y=%d",a[n/2]);
for(i=0;i<n;i++)
minimum+=(int)fabs(a[i]-a[n/2]);
printf("\n最优管道长度为:%d",minimum);
}
问题描述:众数问题:给定含有n个元素的多重集合S,每个元素在S中出现的次数称为该元素的重数,多重集S中重数称为众数。例如:S={1,2,2,2,3,5}中,多重集S的众数为2,其重数为3;算法设计:对于给定的由n个自然数组成的多重集S,计算S的众数及其重数。
#include<stdio.h>
#include<conio.h>
#define N 30
int main()
{
void mode(int [],int [],int m);
int array[N];
int n,i;
printf("请输入元素个数:");
scanf("%d",&n);
int frequency[N]={0};
printf("\n请依次输入这%d个元素(逗号隔开):",n);
for(i=0;i<n;i++)
scanf("%d,",&array[i]);
mode(frequency,array,n);
getch();
}void mode(int freq[],int a[],int n)
{
void bubbleSort(int b[]);
int i,j,largest=0,modeValue=0;
for(i=0;i<n;i++)
freq[i]=0;
for(j=0;j<n;j++)
++freq[a[j]];
for(i=0;i<n;i++)
{
printf("%5d",freq[a[i]]);
if(freq[a[i]]>largest)
{
largest=freq[a[i]];
modeValue=a[i];
}
}
printf("\n众数为:%d",modeValue);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -