当前位置:首页 » 操作系统 » c算法题

c算法题

发布时间: 2022-05-01 22:03:19

⑴ 简单的算法c语言

这道题是把后一半的数插到前一半数的中间,就是说一个数如果是在前半部分他在第几位,就有多少个数插到他的前面。例如2一开始在第2位,那么就要2个数将插到他的前面。那么他的位置就变成原来的2倍。即代码中的i*=2。当第一个数经过一轮操作后回到原来的位置,这时所有的数都回到原来的位置了。 后半部分的位置是插到前半部分相同位置的数的前面,就是2*(i-n)-1。

⑵ 收集各类贪心算法(C语言编程)经典题目

举个例子,假如你买东西,老板需要找给你99分钱,他有上面面值分别为25分,10分,5分,1分的硬币(都是假如,不符合实际),他得找你3个25分,2个10分的,4个1分的才为最佳方案!
用贪心算法编写程序实现!
main()
{
int
i,a[5],b[4],c[4];
/*
define
the
type
of
the
money*/
a[1]=25;
a[2]=10;
a[3]=5;
a[4]=1;
printf("please
input
you
money
(fen):\n");
scanf("%d",&b[0]);
for
(i=1;i<=4;i++)
{
b[i]=b[i-1]%a[i];
/*take
n
25
off
and
money
left*/
c[i]=(b[i-1]-b[i])/a[i];
/*
n
*/
printf("%d
is
%d\n",a[i],c[i]);
}
getch();
}

⑶ C语言算法题

这是一个探索规律题,分析如下:

1级台阶只有一种方法;2级台阶也只有2种方法;3个台阶有3种方法(3=2+1);4个台阶有5种方法(5=3+2);5个台阶有8种方法(8=5+3);6个台阶有12种方法(12=8+4);以此类推:得出一个通式:An=An-2 + An-1

所以代码很容易出来了:

#include<stdio.h>
#include<stdlib.h>
intmain(void)
{
inti,j,N;
inta[30];
a[0]=1,a[1]=2;
while(1)
{
printf("输入楼梯台阶数: ");
scanf("%d",&N);
if(N>30||N<1)
printf("楼梯台阶数输入错误,请重新输入! ");
else
break;
}

for(i=2;i<N;i++)
a[i]=a[i-1]+a[i-2];
printf("%d级楼梯的走法共有%d种。 ",N,a[N-1]);
system("pause");
return0;
}

⑷ C语言算法题目求解

首先穷举每一个起点,对于每一个起点,当后一个元素比前一个元素相差不超过一的时候就不停的后移。退出内循环之后,检查终点和起点之间的距离,如大于已知的最大长度,就更新最大长度值。整个循环结束后输出最大长度值就可以了。

下面是程序的源代码和运行的截图。

#include<stdio.h>
#include<math.h>
int main()
{ int i,j,maxlen=1,a[5]= {1,2,6,7,7};
for(i=0; i<=5-maxlen; i++)
{ for(j=i+1; abs(a[j]-a[j-1])<=1; j++);
if(j-i>maxlen)maxlen=j-i;
}
printf("%d ",maxlen);
return 0;
}

⑸ c语言算法题

按你要求空瓶倒

#include<stdio.h>
intmain()
{
intnum[3],numSave,i,j;
printf("请输入3个数:");
scanf("%d%d%d",&num[0],&num[1],&num[2]);

for(i=0;i<3;i++)
{
for(j=i+1;j<3;j++)
{
if(num[i]>num[j])
{
numSave=num[i];
num[i]=num[j];
num[j]=numSave;
}

}
}
printf("从小到大排列:%d%d%d",num[0],num[1],num[2]);
return0;
}

⑹ C语言 算法题

#include<cstdio>
#include<iostream>
#include<string>
#include<algorithm>
#include<cstring>
using namespace std;
int data[100000];
int dp[100000];
int num;
bool Change(string s)
{

for(int i=0;i<s.size()+1;)
{
if(s[i]<='9'&&s[i]>='0')
{
int t=0;
while(s[i]<='9'&&s[i]>='0')
{
t=t*10+s[i]-'0';
i++;
}
data[num++]=t;
}
else if(s[i]==' '||i==s.size())
{

i++;
continue;
}
else{
return false;
}
}
return true;
}
int main()
{
string s;
while(getline(cin,s))
{
num=0;
bool flag=Change(s);
if(!flag)
{
cout<<"ERROR"<<endl;
continue;
}
/* for(int i=0;i<num;i++)
{
cout<<data[i]<<" ";
}*/
memset(dp,0,sizeof(dp));
int sum=0;
for(int i=0;i<num;i++)
{
sum+=data[i];
}
int half=sum/2;
// cout<<half<<endl;
for(int i=0;i<num;i++)
{
for(int j=half;j>=data[i];j--)
{
dp[j]=max(dp[j],dp[j-data[i]]+data[i]);
}
}
cout<<sum-dp[half]<<" "<<dp[half]<<endl;
}
}

⑺ 求解C语言算法题

这是个数学分析问题,根x01=[-b+-(b^2-4ac)^0.5]/2a
只有根式不是算术运算,
利用泰勒展开将根式化成算求运算,泰勒误差项引起的总误差为题目中的容差,从而得到该求多少项展开。
全部都化成算术运算后,全部先加最后减,即可避免接近float相减。

⑻ 关于算法编程题(C语言实现)

char *a; //字符串 改为 char a[20];//存放字符串的字符数组
int jie; //方程的解 改为 double jie;
dy = 0; 删去 dy=0;
两处的 for(i=1;i<=z;i++) 都改为 for(i = 0; i < z; i++)
if (a[i] == '==' ) 改为 if (a[i] == '=' )
{z=i; 改为 {dy = i;
a=0;b=0; 删去 a=0;b=0;
fun(a,1,dy,&b,&c); 改为 fun(a, 0, dy - 1, &b, &c);
fun(a,dy,z,&b,&c); 改为 fun(a, dy + 1, z - 1, &b, &c);
jie=(d-b)/(e-c); 改为 jie=((double)(d-b))/(e-c);
printf("%c = %d",zm,jie); 改为 printf("%c = %f",zm,jie);

⑼ c语言算法问题

#include"stdio.h"
int main()
{
int a,i;
printf("请输入一个正整数\n");
scanf("%d",&a);
if(a%2==0)
{
printf("偶数:\n");
for(i=0;i<=a/2;i )
printf("]",2*i);
printf("\n");
printf("奇数:\n");
for(i=1;i<a/2;i )
printf("]",2*i-1);
}
else
{
printf("偶数:\n");
for(i=0;i<=(a-1)/2;i )
printf("]",2*i);
printf("\n");
printf("奇数:\n");
for(i=0;i<(a-1)/2;i )
printf("]",2*i 1);
}
return 0;
}

热点内容
ipad文件怎么解压缩 发布:2024-10-05 23:06:28 浏览:163
存储服务器主控芯片 发布:2024-10-05 23:04:33 浏览:570
php学徒 发布:2024-10-05 23:04:30 浏览:439
活字格手机端清除缓存了什么办 发布:2024-10-05 23:03:23 浏览:870
阿杜访问 发布:2024-10-05 22:44:23 浏览:600
我的世界怎么在别的服务器开挂 发布:2024-10-05 22:31:14 浏览:295
下沉算法 发布:2024-10-05 21:59:43 浏览:996
数据库管理系统的开发 发布:2024-10-05 21:58:02 浏览:140
人员最低配置方案怎么写 发布:2024-10-05 21:56:26 浏览:766
智邦国际服务器ip 发布:2024-10-05 21:47:37 浏览:597