vijos p1146 宿舍里的故事之五子棋 找错或者回答

来源:百度知道 编辑:UC知道 时间:2024/06/05 20:58:57
描述 Description
宿舍里好多好多有趣的事!
7890653今天看到不知何时流行的五子棋,在宿舍里拿个本子,画一些格子,一个棋盘就做好了!
当7890653把目光放到棋上,突发奇想,呵呵!一个题目就出来了!
在一个 5*5 的棋盘内,放上n颗棋子,其中(5<=n<=25);
这n颗棋子可以不同的放到任何一个地方---在棋盘内!于是呼,便会有五颗棋子排成一行,
或一列,或两条对角线,不同的放法,就会出现多少排五子的排列!
本题你要做的是,给你一个n,你找出不同放法出现的排列(设为k),如:
n=11;
有(1是棋子,0是空格)
1 1 1 0 0 1 1 1 1 1
1 1 0 0 0 1 1 1 1 0
1 1 0 0 0 1 1 0 0 0
1 1 0 0 0 0 0 0 0 0
1 1 0 0 0 k=2; 0 0 0 0 0 k=1;
只有这两种k值,(注意k不重复),你要输出的便是k值的和。
也就是1+2=3!!!!!!

输入格式 Input Format
输入一个数n, 占一行!
其中(5<=n<=25);

输出格式 Output Format
输出一个k值的总和!(想也不用想k的范围是1<=k<=12的);

样例输入 Sample Input
11

样例输出 Sample Output
3

帮忙找错:
program p1146;
var n,max,min,i,k:integer;
begin
read(n);
case n of
5,6,7,8: begin max:=1;min:=1;end;
9,10,11:begin max:=2

小于5的情况你没考虑到 当 n = 24时k=27,也就是min:=8;
建议你打表吧
var
n,k:integer;
begin
readln(n);
if (n>=0)and(n<=4) then k:=0;
if (n>=5)and(n<=8) then k:=1;
if (n>=9)and(n<=11) then k:=3;
if (n>=12)and(n<=13) then k:=6;
if (n>=14)and(n<=15) then k:=10;
if (n>=16)and(n<=16) then k:=15;
if (n>=17)and(n<=18) then k:=21;
if (n>=19)and(n<=20) then k:=28;
if (n>=21)and(n<=21) then k:=35;
if (n>=22)and(n<=23) then k:=30;
if (n>=24)and(n<=24) then k:=27;
if (n>=25)and(n<=25) then k:=12;
writeln(k);
end.