当前位置:首页 » 操作系统 » 算法输入格式

算法输入格式

发布时间: 2023-05-15 22:38:19

① 写算法有什么格式吗(数据结构学习中。。。)

算法描述当然没有固定格式,自然语言描述的甚至是最容易理解的。
你看到的90%是伪代码,伪代码的好处在于不受编程语言本身的限制,更具通用性。学会看懂伪代码表示的算法是基本功。比如《算法导论》里面的。

② 高分(100)求解算法(加油问题),回答对了追加100

// oil.c :greedy strategy.
//吵渣铅

#include <stdio.h>
#include <stdlib.h>
#define N 20 // the maximum number of oil station
#define Max 300 //the maximum price of oil, never equal or higher than it

int c; /升好/capacity of tank
int e; //number of liters per 100 kilometers
int dist[N];
int price[N];
int dest;
int sum;
int num; // the number of oil stations

int check(int num);
int get_data();
int run(int num);

int get_data()
{
FILE *fp;
int i;
fp=fopen("C:\\input2.txt","r");
if(fp == NULL)
{
printf("No input file!\n");
return 0;
}
fscanf( fp, "%d\n", &c);
fscanf( fp, "%d\n", &e);
i = 0;
while(fscanf(fp, "%d %d\n", &dist[i],&price[i])!= NULL)
{
if ((dist[i]||price[i])==0) break;
i++;
}

fclose(fp);
return i-1;
}
/*
Mothod:
*/

int check(int num)
{
int i;
for(i=0; i<num; i++)
{
if((dist[i]+c*100/e)<dist[i+1]) // whether the oil station can be reached or not
return 0;
}
return 1;
}

int run(int num)
{
int i,j,d,k,low_price,tmp;
d = dist[0];
k = 0;
sum = c*price[0];
dest = dist[num];

while( (d + c*100/e)<= dest)
{
tmp = 0;
j = k+1;
low_price = Max; //max price
for(i = k+1; i < num; i++)
{
if ((dist[i] - d)< (c*100/e)/2) // rule 1
{
tmp++;
continue;
}
if ((dist[i] - d)> c*100/梁誉e) break;
if (price[i] <low_price) //choose the cheapest
{
low_price = price[i];
j = i;
}

}
if(low_price == Max) j = k + tmp; //rule 1 but cannot get to the next station

sum += (dist[j]-d)*price[j]*e/100;
d = dist[j];
k = j;
}

return sum;
}

int main()
{
num = get_data();
if(check(num) == 0)
{
printf("No Solution!\n");
return 1;
}
sum = run(num);
printf("The minimum cost is %d.\n", sum);
return 1;
}

③ 一个算法的部分不知道该怎么实现求教!

我搜迅戚觉得这里用不到并查集。算法其实只要一直维护一个当前最优解就行了,因为任何一个新输昌洞入的作业,无非是在最优解中添加一个作业,或者替换一个作业,使最优解保持为最优就行了。在这个问题里,新输入的作业不可能使最优解变坏,所以保持局部最优,最后输入完成之后也能得到世陵整体最优。
比如按照sample input来看,我们给作业编号:
1 6 -------1号
1 7 -------2号
3 2 -------3号
3 1 -------4号
2 4 -------5号
2 5 -------6号
6 1 -------7号
那么,最优解的集合是这样变化的:{1}->{2}->{2,3}->{2,3}->{2,3,5}->{2,3,6}->{2,3,6,7},于是得到最优的学分数7+2+5+1=15
希望楼主能理解我的意思,我们可以继续探讨。

④ 求解一贪心算法问题

最快回答那个不懂别乱说,别误人子弟。
这题标准的贪心算法,甚至很多时候被当做贪心例题
要求平均等待时间,那么就得用 总等待时弯盯间 / 人数
所以只用关心总等待时间,
如果数据大的在前面,那么后芦闹碧面必然都要加一次这个陪举时间,所以按从小到大排。
给你写了个,自己看吧。
#include "stdafx.h"
#include <iostream>
#include <algorithm>
#include <stdio.h>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
int n;
float arr[105];
cin >> n;
for(int i = 0; i < n; ++i)
cin >> arr[i];
sort(arr, arr+n);
int tnow = 0;
int tmax = 0;
for(int i = 0; i < n; ++i)
{
tmax += tnow;
tnow += arr[i];
}
for(int i = 0; i < n; ++i)
{
printf("%0.2f ", arr[i]);
}
cout << endl;
printf("%0.2f\n",tmax / (float)n);
return 0;
}

⑤ 算法训练 石子游戏 python

算法训练 石子 游戏

问题描述

石子 游戏 的规则如下:

地上有n堆石子,每次操作可选取两堆石子(石子个数分别为x和y)并将它们合并,操作的得分记为(x+1) (y+1),对地上的石子堆进行操作直到只剩下一堆石子时停止 游戏 。

请问在整个 游戏 过程中操作的总得分的最大值是多少?

输入格式

输入数据的第一行为整数n,表示地上的石子堆数;第二行至第n+1行是每堆石子的个数。

输出格式

程序输出一行,为 游戏 总得分的最大值。

样例输入

10

5105

19400

27309

19892

27814

25129

19272

12517

25419

4053

样例输出

15212676150

数据规模和约定

1 n 1000,1 一堆中石子数 50000

思路:

运用贪心算法思想,每次都取石子数量最多和第二多的两堆石子进行合并操作(进行排序操作后取前两个数),即可得到每次操作的得分为最大,最后再将每次的操作得分最大值相加求和即可得到整个 游戏 过程中操作的总得分的最大值。

代码:

欢迎大家采纳和指正!

更多内容请持续关注该账号或CSDN的 RuthlessL!

⑥ 算法输入输出格式是什么

给你举两个例子吧
例1(多个输入,a,b是输入的初始条件)
int fun1(int a, int b )
{
int c;
c = a + b;

return c;
}

例2(0个输入,a,b本身自带初始条件)
int fun1( )
{
int a=1, b=2, c;
c = a + b;

return c;
}

⑦ 用Des算法输入十六进制的分组数据把输入的字符转换成二进制数

由于每个16进数转颤吵指化为了二进制占4位,如16进制中的D转换为二进制位1101,16进制中的12转换为二进茄配制碰唯为00010010,占8位.在DES中,明文输入为64位,本程序以8位为一单位,循环输入8次,因此单次输入格式为两个16进制数,如DE;以空格间隔输入的次数

⑧ 设计算法判断一个无向图G是否为树。

首先题目中有一中吵处应该是错了。

第2到n+1行,应该改为,第2到m+1行


方法:DFS搜索图,图中的边只可能是树边或反向边,一旦发现反向边,则表明存在环。该算法的复杂度为O(V)。


代码:

/*
设计算法判断一个无向图G是否为树。若是,输出“Yes!”;否则输出“No!”。
输入格式:
第1行是空格分隔的两个整数n和m,分别表示无向图的顶点数和边数,n<=10000,m<=100000。
第2到m+1行,每行两个整数a和b,表示顶点a和b之间有一条边,1<=a,b<=n。
键盘输入,不必检查输者乱入错误,输入确保正确。
输出格式:
屏幕上显示一行,“yes!”或“no!”.行末有回车。

样例1

样例卖嫌侍2

输入:
43
12
23
31
输出:
No!

输入:
21
12

输出:
Yes!
*/

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

constintN=10000,M=100000;
booledge[N][N];//数组记录两点是否存在边
boolvisit[N];//标记该节点是否访问

boolDFS_check(intx,inty=-1)
{
if(visit[x])
returnfalse;

visit[x]=true;
inti;
for(i=0;i<N;i++)
if(edge[x][i]&&i!=y)
if(visit[i])
returnfalse;
else
if(!DFS_check(i,x))
returnfalse;

returntrue;
}

intmain()
{
intn,m;
scanf("%d%d",&n,&m);

memset(edge,false,sizeof(edge));
inti,x,y;
for(i=0;i<m;i++)
{
scanf("%d%d",&x,&y);
edge[x-1][y-1]=true;
edge[y-1][x-1]=true;
}

memset(visit,false,sizeof(visit));
boolresult=DFS_check(0);
if(result)
for(i=0;i<n;i++)
if(!visit[i])
result=false;
if(result)
printf("Yes! ");
else
printf("No! ");

system("pause");
return0;
}

⑨ 输入1个无符号二进制数串,编写程序将其转换成对应的十进制数,并输出。

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>

#defineARR_LEN256

/*任意进制数转十进制数*/
/*算法原理:*/
/*10进制转换结果,为各位位码值乘以位权值之和*/
/*位:从0开始,由低位依次向高位*/
/*位码值:各位的10进制值*/
/*位权值:进制的位次方*/
/*R进制数共n位,从低位至高位,第n位表示为Xn,对应10进制数D*/
/*D=X0*R^0+X1*R^1+……+X(n-1)*R^(n-1)+Xn*R^n*/
/*参数说明:*/
/*char*value:其他进制数,以字符串形式存储*/
/*int*result:转换后的十进制数*/
/*intradix:待转换的进制*/
intothers2Decimal(char*value,int*result,intradix){
char*p=value+strlen(value)-1;/*位指针,初态逗纳始定位于最低位*/;
int帆没weight=1;/*位权值,初始为进制的0次方,即为1*/
intdigit;/*位码值*/

*result=0;
do{
/*取位值,兼容10以上进制的大小写字母*/
if(*p>='0'&&*p<='9'&&*p<(radix+'0'))
digit=*p-'0';
elseif(*p>='a'&&*p<='z')
digit=*p-'a'+10;
elseif(*p>='A'&&*p<='Z')
digit=*p-'A'+10;
else
return0;/*位值错误,返回非正常运行导致退出函数*/

*result+=digit*weight;/*位码值乘以位权值之累加*/

/*向高位移动一位并修正位权值*/
p--;
weight*=radix;/*位权值累乘进制,即对应位之进制的位次方*/
}while(p>=value);

return1;
}

intmain(void){
charvalue[ARR_LEN];
intradix=2;
intresult;

printf("请输入%d进制数:",radix);
fflush(stdin);/*清除输入缓冲区*/
gets(value);

putchar(' ');
puts("================================================================ ");

if(!others2Decimal(value,&result,radix))
printf("%d进制数%s错误! ",radix,value);
else{
printf("%d进制 %s ",radix,value);
printf("10进制 %ld "指此,result);
}
putchar(' ');

getch();/*屏幕暂留*/
return0;
}

如有问题,点击头像联系我

⑩ 常用的算法表示形式有哪些

算法的常用表示方法有三种:

1、使用自然语言描述算法;

2、使用流程图描述算法;

3、使用伪代码描述算法。

算法是指对解决方案的准确、完整的描述,是解决问题的一系列清晰的指令。该算法代表了描述解决问题的策略和机制的系统方式。也就是说,对于某个标准输入,可以在有限的时间内获得所需的输出。

如果一个算法有缺陷或不适合某个问题,执行该算法将无法解决该问题。不同的算法可能使用不同的时间、空间或效率来完成相同的任务。一个算法的优劣可以用空间复杂度和时间复杂度来衡量。

热点内容
android添加sdk 发布:2025-05-15 08:59:20 浏览:5
oracle数据导入sql 发布:2025-05-15 08:55:00 浏览:49
最适合做的脚本 发布:2025-05-15 08:54:27 浏览:380
太原php培训班 发布:2025-05-15 08:41:38 浏览:937
豌豆服务器地址 发布:2025-05-15 08:34:56 浏览:712
linux下php编译安装 发布:2025-05-15 08:30:37 浏览:592
c语言八进制十六进制 发布:2025-05-15 08:22:17 浏览:282
华为安卓如何更新鸿蒙 发布:2025-05-15 08:18:52 浏览:373
工商密码器是什么 发布:2025-05-15 08:18:50 浏览:752
c语言自考 发布:2025-05-15 07:52:42 浏览:501