算法问题
来源:互联网 发布:网络棋牌源码 编辑:程序博客网 时间:2024/06/04 00:44
10月1放假回来的第一篇文章,因为回来的比较早,把之前说过的一篇关于dijkstra的文章看了一下,我总结了几个问题,我发现贪心算法,所计算的路径不是最短的,只是相对最短的路径。http://blog.csdn.net/tyzsm/article/details/73469595我看了这个博主的算法,至今对于人们常说的最短路径问题还感觉到混乱。好吧言归正传我最近经常看到一个关于硬币翻转的问题,大概就是给6枚硬币,3个正面朝上,3个反面朝上,每次翻动2个,至少翻多少次可以使硬币全部向下?
好了废话不说了,直接上代码
#include <iostream>
using namespace std;
int main()
{
cout << "请输入总共硬币数量:";
int a ;
cin >> a ;
cout << endl;
cout << "请输入正面朝上的硬币数:";
int b;
cin >> b;
cout << "每次翻动硬币的数量:";
int d;
cin >> d;
cout << "请选择求翻转后最终结果,如果全部为正选择N,否则选择 Y";
char c;
cin >> c;
while (!((c != 'n') ^( c != 'y')))
{
cout << "输入变量存在问题";
cin >> c;
}
if (c == 'n')
{
int temp = a - b;
for (int i = 0; i < a; i++)
{
if (!((temp + a * i) % d))
{
cout << endl;
cout << "翻动硬币最少次数:" << i+1;
break;
}
if (i = a - 1)
{
cout << "无法完成";
}
continue;
}
}
else
{
int temp = b;
for (int i = 0; i < a; i++)
{
if (!((temp + a * i) % d))
{
cout << endl;
cout << "翻动硬币次数最少: " << i+1;
break;
}
if (i = a - 1)
{
cout << "无法完成";
}
}
}
char r;
cin >> r;
return 0;
}
通过上面这个程序,我搞懂一点,就是这句话 while (!((c != 'n') ^( c != 'y'))) 之前用‘||’发现一直死循环 。
话说‘||’问题,上次做过一个计算机的面试题,如果‘||‘之前的条件是真,那么’||‘后面的条件是不会运行的。记住是不会运行的。这个里面会有很多陷阱题,我就不一一的总结了。
前几天犯了一个很啥的错误
vector <int > temp ;
temp<< .......;//输入了很多数据 ;
for(int i = 0 ;i < temp.size() ; i++)
{
temp.push_off() ;
}
这个问题挺傻的应该提前把temp.size() 的值输出出来 。
那道题题目大概就是0~5个并列的小组 ,从中让某个小组排在另外一个小组之后,然后后面的小组序号将变成前面小组的序号,经过几轮塞选之后,只剩下一组,问原来组的次序是多少?
代码如下:
#include <iostream>
#include <vector>
#define num 6
using namespace std;
vector<vector<int>> temp;
vector<int> shunxu;
int main()
{
for (int i = 0; i < num; i++)
{
shunxu.push_back(i);
temp.push_back(shunxu);
shunxu.clear();
}
for (int i = 0; i < num - 1; i++)
{
int a, b;
cin >> a;
cin >> b;
int bsize = temp[b].size();
for (int j = 0; j < bsize ; j++)
{
temp[a].push_back(temp[b].front());
temp[b].erase(temp[b].begin());
}
if (i == num-2)
{
for (int j = 0; j < temp[a].size();j++)
{
cout << temp[a].at(j);
}
}
}
char a;
cin >> a;
return 0;
}
这个里面学到的就是vector<vector<int>> a ;
当我把a[1]里面的数全部删除了,他容器仍存在。之前没注意这个问题。
好吧最后时间,有个简单的问题,给出一个数列,例如[-1,2,-3,-5 ,6,-2,8,-7] ;
问哪段数据的和最大,其实问题就是3个for循环,最外面是for循环是起点,第二层是尾点,第三层介于起点和尾点。
好吧博主饿了,不扯了,待这几天博主在看几个算法,在进行发布。
- 算法问题
- 算法问题
- 算法问题
- 算法问题
- 算法--基础算法问题
- [ 算法]经典程序算法问题
- 数据结构算法问题 约瑟夫问题
- 算法问题分析--邮票问题
- 算法的问题
- Fibonacci数列问题算法
- 几个算法的问题
- LCS问题算法
- 算法问题求解
- 指派问题匈牙利算法
- 背包问题的算法
- 公交换乘算法问题
- 递归算法 背包问题
- “背包问题”的算法
- hive函数_split 字符串分割函数
- Tensorflow实例:mnist手写数字
- 查询类报表mongodb语句设计
- sonar代码审查问题分析
- 关于模板引擎handlebars.js基本用法
- 算法问题
- Oracle经典案例
- TOP100summit 2017:小米唐沐等大咖精心挑选的100个年度研发案例实践
- 用Windows Storage Server 2008做iSCSI存储服务器
- Sql Server性能优化辅助指标SET STATISTICS TIME ON和SET STATISTICS IO ON
- 移动端swiper卡片3D切换
- Linux 查找文件及内容
- 欧拉回路 欧拉路径某些问题集合
- eclipse使用