直接插入排序,虽然之前学了,但从未实践过,所以今天写题就又忘了
for(i= 1 ;i < n ; i++){//从第二个数开始,当第一个是有序的
k = a[i];
j = i - 1;
while(j >=0 && a[j] > k){
a[j + 1] = a[j];j--;
}
a[j+1] = k;}
应该不会忘了吧;
下午看了下项目里面最简单的推箱子。
不错,的确不是很难,只要用到数组,调用函数,无须栈。
只要不断判断就可以,但需要考虑周全。
晚上刷题卡了不少
卡好久,
1 .考虑不周全,在n擅长打代码的,m 个擅长数学,n == m 时考虑不清。
2 .用了while循环,时间超限。
3 .将cmx减cmx中最小值,有一个为0,是nm直接输出最小值,是x时考虑不清晰。。
4. 当2*m < n 时输出最小加m,n > m&&n < 2* m,输出最小+m+n/3;以此类推。。又忘了n == m
5终于改对了
说实话,这个拆箱子我觉得我没错,我不懂
我的错误代码如下
正确代码
思路差别不大啊, 就是{
左括号压栈,右括号出栈,输出栈长度;
左括号加一,右括号减一,输出标记数;}
对了,还学到了排序,用sort给结构体排序,今天还用到了,我觉得差不多了
struct qv{
int a;
int b;
}z[100];
如果想把结构体按a的大小排序,则
sort(z,z+m,com);
bool com (qv x,qv y)//x y随意,只传值
{
return x.a>x.b//>为降序,< 为升序
}