1題意
剛剛弄完,差5分鐘;比賽結束了,機器翻譯沒有提交成功; 對於對列中數據的輸出輸入,刪除,初次見到,保存在這
#include<iostream>
using namespace std;
main()
{int a,b,c,s2[1000],d,j=-1,ss=1,k=0,i,s1=0,s[1000]={-1};
cin>>d>>a;
for(b=0;b<a;b++)
{cin>>s2[b];}
for(c=0;c<a;c++)
{for(i=k;i<=j;i++)
{if(s2[c]==s[i])
{ss=0;
break;}
}
if(ss)
{s[++j]=s2[c];
if(j-k+1>d)
k++;
s1++;}
ss=1;}
cout<<s1<<endl;
}
2--獎學金-----這道題看了代碼後,當時比賽時沒做出來,現在一看,哇,原來還可以這麼做,
我就重新敘述一遍題意,然後把這個很好的方法再描述一遍;
輸入n個同學的語文,數學,英語成績;學號爲1,2,。。n;
輸出5個同學的學號 總成績,(1,看總成績(從大到小)2,若總成績相同,看語文(從大到小)3,語文成績相同,看學號(從小到大);)
思路;直接把總成績,語文,學號放在一個數組裏,再比較大小,這種方法很巧,學以致用;
c 代碼
#include<stdio.h>
int s[301];
main()
{
int a,b,c,d,e,k,t,i,j,x,s1;
scanf("%d",&a);
for(b=1; b<=a; b++)
{
scanf("%d %d %d",&c,&d,&e);
t=c+d+e;
k=a-b;
s[b]=t*1000000+c*1000+k;
}
for(i=1; i<a; i++)
{
for(j=i+1; j<=a; j++)
{
if(s[i]<s[j])
{
s1=s[i];
s[i]=s[j];
s[j]=s1;
}}
}
for(x=1; x<=5; x++)
{
printf("%d %d\n",a-s[x]%1000,s[x]/1000000);
}}
3---題意
上體育課的時候,小蠻的老師經常帶着同學們一起做遊戲。這次,老師帶着同學們一起做傳球遊戲。
遊戲規則是這樣的:n個同學站成一個圓圈,其中的一個同學手裏拿着一個球,當老師吹哨子時開始傳球,每個同學可以把球傳給自己左右的兩個同學中的一個(左右任意),當老師在此吹哨子時,傳球停止,此時,拿着球沒有傳出去的那個同學就是敗者,要給大家表演一個節目。
聰明的小蠻提出一個有趣的問題:有多少種不同的傳球方法可以使得從小蠻手裏開始傳的球,傳了m次以後,又回到小蠻手裏。兩種傳球方法被視作不同的方法,當且僅當這兩種方法中,接到球的同學按接球順序組成的序列是不同的。比如有三個同學1號、2號、3號,並假設小蠻爲1號,球傳了3次回到小蠻手裏的方式有1->2->3->1和1->3->2->1,共2種。
輸入共一行,有兩個用空格隔開的整數n,m(3<=n<=30,1<=m<=30)。
輸出t共一行,有一個整數,表示符合題意的方法數。
#include<iostream>
using
namespace
std;
int
main()
{
int
ss[33][33]={0};
int
a,b,c,d;
cin>>a>>b;
ss[0][0]=1;
for
(c=1;c<=b;c++)
{
for
(d=0;d<a;d++)
{ss[c][d]=ss[c-1][(d-1+a)%a]+ss[c-1][(d+1)%a];
}}
cout<<ss[b][0]<<endl;
return
0;}