首先呢 是一种思想
最大子序列
如何最大
我们这样想 和最大的情况 首先 你得尽可能的减少负数的录入
或者 万一中间一个负数 后面更大了如何
如果 一个负数使得前面的和加起来也没有这个负数打的时候
那就要抛弃掉这个负数 和之前的和
int thissum=0,maxsum=0;
for(int i=0;i<n;i++)
{ cin>>a[i];
thissum+=a[i];
if(thissum>maxsum) maxsum=thissum; //寻找最大的值
else if(thissum<0) thissum=0;//抛弃掉无用的值
}
cout<<maxsum;
然后呢 是一些好玩的东西了
我们知道 字符是做大数问题的主要方式
如何方便的赋值呢
char c;
int i=0;
for(;(c=getchar())!='\n';)
a[i]=c-48;i++;
这样就可一方便的赋值了 剩下的自行脑补;
下面的主要是一种装逼的模式 可以让新手感觉好流弊
鉴于 我逻辑不好 就打一篇完整的
int main()
{ void in(int );
void out(int );
...................
in(x);
out(x);
}
void in(int x)
{ for(int i=0;i<x;i++) cin>>?}
void out(int x)
{for(int i=0;i<x;i++) cout>>?}
细节自行脑补
还有就是关于素数最快的判定方法了
首先 我们判定这货是不是偶数
如果不能被2整除 就两个两个奇数判定
if(x%2==0) 不是素数
else
for(i=2;i*i<=x;i+=2) if(x%i==0) 判定
细节自行脑补
鉴于我着实很无聊
又刚刚看懂链表
首先 链表链表的 就是链子嘛 首尾相连
struct honor
{
int x;
honor *next;
}
lingjian[100];
//链表肯定不能只有一个零件;
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>lingjian[i].x;
lingjian[i].next=&lingjian[i+1].next;
}
lingjian[i-1]=0; // 总要有个能判定的条件结束;
honor *p,*head;
head=lingjian;
p=honor;
do
{
cout<<p->x<<endl;
p=p->next;
}while(p!=0);
//大致的意思就是 链起来 做一个结尾的指针与下一次的开头相连;
这是个 易理解的代码
#include <iostream>
using namespace std;
int main()
{
int n;
void print(int );
while(cin>>n)
{
print(n);
}
return 0;
}
void print(int x)
{
int b;
for(int i=0;i<x;i++)
{
cin>>b;
cout<<b<<'z';
}
cout<<endl;
}